[英]Measuring distances between pixels of an irregular bounded object in an Image with Python and OpenCV
我是图像处理和 python 的新手,但有兴趣测量两个轴(主要和次要)的像素距离。 关于如何创建边界和轴(主要和次要)的初始程序的此链接的确认。
我已经使用上面链接中的片段通过将cv2.drawContours(orig, box.astype('int'),-1, (0, 255, 0), 3)
的参数更改为cv2.drawContours(orig, box.astype('int'),-1, (0, 255, 0), 3)
来创建边界cv2.drawContours(orig, ctns,-1, (0, 255, 0), 3)
获取轴但无法根据需要测量距离。 请帮助我了解如何根据附件实现预期结果,请记住,有界对象中1
条线与另一条线之间的距离为1
像素。 以下是附件。
我认为你应该做的是这个。你的cnts
是一个点数组,重要的是你找到一种方法来定义你想要测量距离的点。
例如,也许是极端? 最大和最小的 x 值以及最大和最小的 y 值。 或者只是具有x1=x2
和y1=y2
。 在您决定要使用哪些点后,对于选定的点,简单distance = √ x^2 + y^2
。
对于 1,您必须首先找到对象的中心。 我会建议这个线程: 不规则形状的 OpenCV Centroid ,然后你可以应用下面解释的相同逻辑。
2:
#say your contours array looks something like this.
cnts = [(12,12),(13,14),(14,16)...]
假设您选择第 1 点:
selected_point = cnts[0] #(x,y) = (12,12)
从逻辑上讲,它的对应项将具有相同的 x 或相同的 y 值,具体取决于您是垂直还是水平绘制线条。 例如,如果您水平移动,它将具有相同的 y 值。 因此,在cnts
数组中搜索具有y=12
值的另一个点,并使用x1-x2
测量它们之间的距离。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.