我想写一个工具来寻找图像中每个有界对象内的Angular 、曲线和直线的数量.
如图所示,对于每个有界区域,将记录每个形状出现.最好能够设定一个阈值,将曲线的弯曲度视为曲线而非Angular 等,直线和Angular 也是如此.
我曾使用Hough线变换检测其他图像上的直线,它可能与我认为的某些东西结合使用.
我对opencv以外的其他库开放——这正是我的一些经验.
提前谢谢
编辑:
它会产生一个输入"k"的比较复杂的结果,在这里它正确地识别了Angular 周围的一些点,但是"腿"(下对角线部分)上有很多点.我不确定如何将其分割成直线、Angular 和曲线.
代码:
import numpy as np
img = cv2.imread('Helvetica-K.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
edges = cv2.Canny(blurred, 50, 150, apertureSize=3)
ret, thresh = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
#cv2.drawContours(img, contours, 0, (0,255,0), 1)
#Coordinates of each contour
for i in range(len(contours[0])):
print(contours[0][i][0][0])
print(contours[0][i][0][1])
cv2.circle(img, (contours[0][i][0][0], contours[0][i][0][1]), 2, (0,0,255), -1)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()