本文共 1140 字,大约阅读时间需要 3 分钟。
本篇博客讲述如何使用python的openCV库实现对图像的水平投影和竖直投影:
关键代码如下:import cv2#读取图片image1 = cv2.imread('../img/123.png')# 灰度图像gray = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)# 二值化ret, binary = cv2.threshold(gray,130, 255, cv2.THRESH_BINARY)(h,w) = binary.shape#返回高和宽#垂直投影vproject = binary.copy()a = [0 for x in range(0,w)]#记录每一列的波峰for j in range(0,w):#遍历一列 for i in range(0,h):#遍历一行 if vproject[i,j]==0:#如果改点为黑点 a[j]+=1#该列的计数器加1计数 vproject[i,j]=255#记录完后将其变为白色for j in range(0,w):#遍历每一列 for i in range((h-a[j]),h):#从该列应该变黑的最顶部的点开始向最底部涂黑 vproject[i,j]=0 #涂黑cv2.putText(vproject,"verticality",(50,50),cv2.FONT_HERSHEY_SIMPLEX,1.5,(100,100,100),4)#水平投影hproject = binary.copy()b = [0 for x in range(0,h)]for j in range(0,h): for i in range(0,w): if hproject[j,i] == 0: b[j] += 1 hproject[j,i] = 255for j in range(0,h): for i in range(0,b[j]): hproject[j,i]=0cv2.putText(hproject,"horizontal",(50,50),cv2.FONT_HERSHEY_SIMPLEX,1.5,(100,100,100),4)cv2.imshow("image1",image1)cv2.imshow("vproject",vproject)cv2.imshow("hproject",hproject)cv2.waitKey(0)cv2.destroyAllWindows()
运行的效果图如下:
转载地址:http://bche.baihongyu.com/