目标:用图像投影的方法来寻找超简单的图案
步骤一:模糊后转化成灰度图
src = cv.imread("D:/pythonTest/img/8.jpg")
#cv.imshow("input",src)
src1 = cv.GaussianBlur(src,(3,3),0)
gray = cv.cvtColor(src1,cv.COLOR_BGR2GRAY)
步骤二:转化为二值图像
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
cv.imshow("binary",binary)
步骤三:绘制投影图
h,w = binary.shape
x_prob = np.zeros((w),dtype = np.int32)
y_prob = np.zeros((h), dtype=np.int32)
for row in range(h):
count = 0
for col in range(w):
pv = binary[row,col]
if pv==255:
count += 1
y_prob[row] = count
for col in range(w):
count = 0
for row in range(h):
pv = binary[row,col]
if pv==255:
count += 1
x_prob[col] = count
plt.plot(y_prob,color = 'b')
plt.xlim([0,h])
plt.show()
plt.plot(x_prob, color='r')
plt.xlim([0, w])
plt.show()
得到以下投影视图:
然后根据视图找出X轴和Y轴的图像起始点与终止点。我使用的图形为w(165,325),h(100,260)
步骤四:绘制出矩形框
cv.rectangle(src,(165,100),(325,260),(0,0,255),4,cv.LINE_8,0)
cv.imshow("output",src)
以上,是超简单的寻找简单图形的方法,但是适用范围有限。