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()函数返回两个值,一个是轮廓本身,还有一个是每条轮廓对应的属性。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题