【问题标题】:Measuring distances between pixels of an irregular bounded object in an Image with Python and OpenCV使用 Python 和 OpenCV 测量图像中不规则有界对象的像素之间的距离
【发布时间】:2020-02-06 07:58:28
【问题描述】:

我是图像处理和 python 的新手,但有兴趣测量两个轴(主要和次要)的像素距离。感谢link 了解有关如何创建边界和轴(主要和次要)的初始程序。

我已经使用上面链接中的sn-p通过将cv2.drawContours(orig, box.astype('int'),-1, (0, 255, 0), 3)中的参数更改为cv2.drawContours(orig, ctns,-1, (0, 255, 0), 3)来创建边界,以获取轴但无法根据需要测量距离。 请帮助我了解如何根据附件实现预期结果,记住1 线与有界对象中的另一条线之间的距离为1 像素。以下为附件。

【问题讨论】:

标签: python opencv


【解决方案1】:

我认为你应该这样做。你的cnts 是一个点数组,重要的是你要找到一种方法来定义你想要测量距离的点。

例如,可能是极端情况?最大和最小的 x 值以及最大和最小的 y 值。或者只是具有x1=x2y1=y2 的点。在您决定要使用哪些点之后,选择点很简单distance = √ x^2 + y^2

对于 1,你必须首先找到对象的中心。我建议这个线程:OpenCV Centroid of Irregular Shape,然后你可以应用下面解释的相同逻辑。

对于 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 测量它们之间的距离。

【讨论】:

  • 1.假设我想从物体的质心向任一方向测量,直到 green 边界,我该如何通过? 2.从物体左侧到右侧,不超过绿色边界。选择任意一点作为边界上的起点
  • ........ 谢谢,抱歉耽搁了。这似乎正是我想要的,我希望你擅长它。你为什么不能给我一些sn-ps,我可以用excel格式保存具有相应距离的坐标,例如:(12, 23), (12, 32), d = 9在三列中p1p2d
猜你喜欢
  • 2012-01-27
  • 2021-02-17
  • 2019-02-02
  • 1970-01-01
  • 2014-04-02
  • 2019-05-17
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
相关资源
最近更新 更多