Doleres 2019-09-26 18:41 采纳率: 0%
浏览 1324
已结题

Python边缘检查与轮廓检测的代码详解?

Python如何通过cv2.findContours()和cv2.drawContours()只获取如下图最外层黑框内的所有对象的外轮廓如红色标记的轮廓?过滤掉最外层黑色框的外轮廓、子轮廓和黑色框内对象的内轮廓的?如有代码详解,感激不尽!图片说明
图片说明
①无法提前预知红色轮廓的个数
②只想获得红色轮廓
可能因为对象轮廓不封闭,导致函数cv2.findContours()设定参数cv2.RETR_EXTERNAL,也会检测到框内的轮廓

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-09-27 00:24
    关注

    用cv2.threshold,注意cv2.RETR_CCOMP参数

    cv2.threshold函数的解释
    参数
    第一个参数是寻找轮廓的图像;
    第二个参数表示轮廓的检索模式,有四种(本文介绍的都是新的cv2接口):
    cv2.RETR_EXTERNAL表示只检测外轮廓
    cv2.RETR_LIST检测的轮廓不建立等级关系
    cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
    cv2.RETR_TREE建立一个等级树结构的轮廓。
    第三个参数method为轮廓的近似办法
    cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
    cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
    cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法
    返回值
    cv2.findContours()函数返回两个值,一个是轮廓本身,还有一个是每条轮廓对应的属性。

    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功