【问题标题】:OpenCV python search within contourOpenCV python在轮廓内搜索
【发布时间】:2020-03-30 15:33:05
【问题描述】:

我在一个项目中使用 Python3 和 OpenCV。我正在使用相机从空中位置拍摄图像。有 3 个不同颜色的方块相互触动,背景混乱。我能够消除整个背景,并得到一个包含 3 个正方形的轮廓。

如何在该轮廓内搜索以确定哪个颜色方块是哪个?

  def filter_size(self, pixel_size):
    _, cnt, _ = cv2.findContours(self.processed_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for c in cnt:
        if cv2.contourArea(c) > pixel_size:
            self.countours.append(c)  #  contains my found contours

我希望能够在该轮廓内使用我的 HSV 过滤器,通过颜色标记每个正方形。

谢谢, 凯尔

【问题讨论】:

  • 您可以提及基本颜色的颜色范围,并尝试搜索该颜色是否存在
  • @JeruLuke 是的,但是如何指定边界在我的轮廓内?
  • 使用在线颜色代码转换器LIKE THIS
  • @JeruLuke 我确实认为你错过了我的观点。我不想在小轮廓内搜索整个图像。我知道如何过滤颜色,只是不知道如何指定位置范围
  • OK,既然你已经找到了想要的轮廓区域,你可以屏蔽掉不需要的区域

标签: python opencv


【解决方案1】:
  1. 既然您已经找到了轮廓区域,您可以在轮廓内部进行迭代并找到新的轮廓,这些新轮廓最终会有 3 个轮廓。
  2. 之后,您可以从轮廓中心获取样本,如下所示。

    for c in contours: x,y,w,h = cv2.boundingRect(c)

  3. 因为 x 和 y 将是轮廓 c 的中心点;最后,您所要做的就是将 HSV 掩码应用于中心点。

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 2019-01-25
    • 2016-09-25
    • 1970-01-01
    • 2021-09-07
    • 2012-02-25
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多