标签:标号 putText 矩形 openCV cnts print 轮廓 cv
示例代码:
就像下面这段代码,直接利用cv.putText函数即可,注意数字需要转化成字符型!
# 提取轮廓
# findContours函数会修改原始图像
cnts = cv.findContours(cannyImg.copy(), mode=cv.RETR_EXTERNAL, method=cv.CHAIN_APPROX_SIMPLE)
# print(cnts)
cnts = imutils.grab_contours(cnts)
numCnts = contours.sort_contours(cnts, method="left-to-right")[0] ##排序,从左到右将轮廓排列
total = 0
num=1
for (i,c) in enumerate(numCnts):
#print(i)
# 直边界矩形一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。所以边界矩形的面积不是最小的。
# (x,y)是矩形左上角坐标,(w,h)是矩形宽和高
(x, y, w, h) = cv.boundingRect(c)
#限制条件,剔除一些不想要的轮廓
if cv.contourArea(c) > 80 or cv.contourArea(c) < 40 or w >= 15 or h >= 15:
continue
#轮廓面积
# print(cv.contourArea(c))
# print('w=',w,'h=',h)
#轮廓位置
print('(%d,%d)' % ((x + h) / 2, (y + w) / 2))
# 在原图上描出轮廓,因为原图是三通道的,轮廓的圈显示的是红色,若是在灰度模式下读的图片上直接勾勒轮廓那就不是红色了,不利于观察!
cv.drawContours(original, [c], -1, (0, 0, 255), 1)
# cv.putText各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细
#用num而不用i,输出一下i就知道会受到其他被排出的轮廓的干扰!
cv.putText(original,str(num), (x, y - 15), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)
示例图:
标签:标号,putText,矩形,openCV,cnts,print,轮廓,cv 来源: https://blog.csdn.net/weixin_44593822/article/details/114876195
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。