ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Opencv 图像处理-Contours函数提取轮廓及感兴趣区域ROI的必用且实用操作技巧-(涵盖Contours的一切使用基础,附代码段)

2022-01-26 14:00:15  阅读:250  来源: 互联网

标签:ROI int 代码段 axis Contours 图像 print 轮廓 contours


        需求目的:一般都是做项目时使用opencv的findcontours和drawcontours搭配使用抓取图像内感兴趣区域。

1.Contours函数轮廓点大小排序

当使用findcontours后一般返回是contours, hierarchy两个,contours内包含的是根据设定模式所返回的轮廓。

最常使用:cv2.RETR_EXTERNAL,此模式只检测外轮廓。(输入图像必须先转灰度图再转二值图,这部分的阈值处理必须做好,调整好系数,使图像达到最理想的状态)

contours的类型为列表,contours[0]存储的是轮廓的高h,contours[1]存储的是轮廓的宽w,因此可使用contours.sort(key=所需轮廓的规则,reverse=False)方法接drawcontours可对区域进行提取,其中reverse=False为升序,True为降序。

当想挑选出所有轮廓点中最小和最大值可这么写(axis是维度):

print("最小的h:",min(np.min(contours[0],axis=2)))
print("最小的w:",min(np.min(contours[1],axis=2)))
print("最大的h:",max(np.max(contours[0],axis=2)))
print("最大的w:",max(np.max(contours[1],axis=2)))

此时如果处理好了,这就是轮廓的最大外接矩形的左上角和右下角,可通过切割法对图像进行切割;

fimg = img[int(minh):int(maxh),int(minw):int(maxw)]

显示图像可发现ROI被裁减出来。

2.输出contours类型

如果各位没有明白,那么咱们一点点来,先要确定的是contours到底是什么类型的,怎么用?

print("contours:类型:", type(contours))
print("第0 个contours:", type(contours[0]))

输入上述代码,可显示contours和contours[0]的类型,知道了对应类型,就知道该使用怎样的方式去用。

3.contours数量

print("contours 数量:", len(contours))

输出contours的数量也是十分重要的技巧之一,观察图像和我们输出的轮廓数量,从而分析现阶段处理的轮廓是不是我们理想的情况。(我目前的项目是轮廓数越少越好,更容易处理图像)

4.contours的具体内容

contours本身是列表类型,因此使用下面代码即可输出

print("counters:",contours[0])
print("counters:",contours[1])

其中[0]代表高h,[1]代表宽w

5.contours轮廓点的个数

print("contours[0]点的个数:", len(contours[0]))
print("contours[1]点的个数:", len(contours[1]))

重要*)6.循环contours点形成最小外接矩形,并绘制从而进行其他操作。

通过Opencv的几何形状函数结合轮廓点进行图形绘制。此部分放到下一篇Opencv最小外接矩形函数部分给出详细说明及代码段。

本人尚才疏学浅,如有错误,欢迎指正与问题交流!

标签:ROI,int,代码段,axis,Contours,图像,print,轮廓,contours
来源: https://blog.csdn.net/T_just_for_tomorrow/article/details/122695321

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有