Python OpenCV-获取图像内元素的边界坐标

时间:2018-09-05 21:21:06

标签: python opencv image-processing

我知道我的问题听起来有些通用,但是我读了很多博客和有关此问题的问题,但仍然找不到能够与我尝试做的事情接近的解决方案。我有随附的示例IG屏幕截图。我的目标是获取以绿色突出显示的元素的坐标。 Canny edge似乎没有任何作用(另请参见https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_canny/py_canny.html)。我读到Houg Transform可以提供帮助(https://pysource.com/2018/03/07/lines-detection-with-hough-transform-opencv-3-4-with-python-3-tutorial-21/),但仍然没有运气。 我需要的只是一种获取这些部分并获取其坐标的方法。如果有人可以简单地指出我哪些技术可以帮助我,那将会有所帮助。

enter image description here

3 个答案:

答案 0 :(得分:0)

你好,我想你可以做下一个:

  1. 由于您已经真正确定了边界矩形的颜色,因此可以从该图像中提取该颜色到另一幅图像(image_green)中。

  2. 现在,一旦您将image_green二进制化(image_bin),即。创建一个具有两种颜色的数组,分别是提取的一种和前景。

    1. 对image_bin矩阵进行遍历,找到所有“角”,它们是所有image_bin[i:i+2,j]/max(image_bin.flatten()) == [1,0](列)和j(行)。
    2. 存储此坐标(i)。正如我之前提到的,这些值代表矩形的2个角:左上角和右下角。

此方法是使用numpy数组完成的,因此您可能会想像需要在第3步之前将图像转换为数组。如果仍然遇到问题,请告诉我,只要有空闲时间,我都会发布可以做到这一点的代码。

祝你好运!

答案 1 :(得分:0)

假设它们在实际数据中不是绿色!

标准方法是边缘检测(canny或adaptiveThreshold),然后轮廓。使用approxPolyDP简化轮廓,然后在轮廓列表中搜索长度和形状正确的边。

提示:使用cv2.minAreaRect()检查可能是盒子大小/形状/对齐方式的轮廓

您可以使用概率Hough来找到线段,但是由于源图像非常干净,因此仅通过轮廓看就容易了

答案 2 :(得分:0)

这种边界检测可以使用普通的 Canny 边缘检测器来完成。我们只需要在应用 Canny 之前锐化图像。

代码如下:

RawQuery