100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【图像识别】初探数字识别-水表(3)

【图像识别】初探数字识别-水表(3)

时间:2023-01-04 17:01:44

相关推荐

【图像识别】初探数字识别-水表(3)

轮廓检测

之前用的方法还是不能直接分割出待识别的数字区,下面尝试新的方法。

运用OpenCV findContours函数检测图像所有轮廓;对于检测出的轮廓,contourArea限制轮廓所包围的面积的大小;boundingRect识别出正矩形,通过矩形的宽度和高度筛选出想要的图片区域。

findContours

_,contours,hierarchy = cv2.findContours(thresh3,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

thresh3 是处理过的灰度值矩阵cv2.RETR_LIST 检测模式,检测所有的轮廓,并且不建立包含被包含的关系。在此模式下,返回量hierarchy向量内所有元素的第3、第4个分量 = -1cv2.CHAIN_APPROX_SIMPLE 保存模式,仅保存边缘的拐点,例如三角形就保存3个顶点的坐标。返回:contours为每个轮廓的点集;hierarchy 向量内每一个元素的4个int型变量,分别表示每个轮廓的后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号。contourArea函数可以得到当前轮廓包含区域的大小,方便轮廓的筛选

boundingRect

for cnt in contours:if cv2.contourArea(cnt)>30: #筛选出面积大于30的轮廓[x,y,w,h] = cv2.boundingRect(cnt) #x,y是左上角的坐标,h,w是高和宽if h > 28 and h < 50: # 根据期望获取区域,即数字区域的实际高度预估28至50之间cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)plt.imshow(im)

限制高度28至50后,效果

继续限制宽度大于100后效果

切割识别

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。