jesus799 2023-12-02 10:45 采纳率: 0%
浏览 9

cv2.pointPolygonTest一直报错怎么办

以下是部分代码截图和报错截图报错原因pt错误(我反复检查了,感觉输入类型没有错误)

img

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-02 12:27
    关注

    【相关推荐】



    • 这篇博客也许可以解决你的问题👉 :OpenCV – cv2.pointPolygonTest 判断点是否在多边形内
    • 除此之外, 这篇博客: opencv 判断点在多边形内外中的 1、cv2.pointPolygonTest() 函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

              函数定义:cv2.pointPolygonTest(contour, pt, measureDist)

              函数功能:找到图像里的点和轮廓之间的最短距离. 它返回的距离当点在轮廓外的时候是负值,当点在轮廓内是正值,如果在轮廓上是0。

              其中,contour 为轮廓多边形;pt 为坐标点;measureDist, 若为True,是找带符号的距离;若为False,会找点是否在内,外,或轮廓上(相应返回+1, -1, 0)。

      测试用例:

      import cv2
      
      mask = cv2.imread(r"mask.jpg", 0)
      mask[mask > 100] = 255
      mask[mask != 255] = 0
      
      cnts, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
      print("mask info:", mask.shape, len(cnts))
      
      pt0 = (131, 104)  # 外点, 红色
      pt1 = (166, 157)  # 轮廓上的点
      pt2 = (260, 170)  # 内点
      img = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
      img = cv2.circle(img, pt0, 2, (0, 0, 255), 2)  # 红色
      img = cv2.circle(img, pt1, 2, (0, 255, 0), 2)  # 绿色
      img = cv2.circle(img, pt2, 2, (255, 0, 0), 2)  # 蓝色
      
      dst0 = cv2.pointPolygonTest(cnts[0], pt0, 1)
      dst1 = cv2.pointPolygonTest(cnts[0], pt1, 1)
      dst2 = cv2.pointPolygonTest(cnts[0], pt2, 1)
      print("dst:", dst0, dst1, dst2)
      cv2.imwrite(r"ret.jpg", img)

      测试结果:

      dst: -58.52 2.82 44.28

      图像:


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月2日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表