繁体   English   中英

使用 Python 和 OpenCV 测量图像中不规则边界对象的像素之间的距离

[英]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=x2y1=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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM