Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和OpenCV测量图像中不规则有界对象的像素之间的距离_Python_Opencv - Fatal编程技术网

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

使用Python和OpenCV测量图像中不规则有界对象的像素之间的距离,python,opencv,Python,Opencv,我不熟悉图像处理和python,但对测量两个轴(大轴和小轴)的像素距离感兴趣。关于如何创建边界和轴(长轴和短轴)的初始步骤,请确认这一点 我使用了上面链接中的代码片段来创建边界,方法是将cv2.drawContours(orig,box.astype('int'),-1,(0,255,0),3)中的参数更改为cv2.drawContours(orig,ctns,-1,(0,255,0),3)以获得轴,但无法根据需要测量距离。 请帮助我了解如何根据附件实现预期结果,记住1线与有界对象中另一条线之间

我不熟悉图像处理和python,但对测量两个轴(大轴和小轴)的像素距离感兴趣。关于如何创建边界和轴(长轴和短轴)的初始步骤,请确认这一点

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

我认为您应该这样做。您的
CNT
是一个点阵列,您必须找到一种方法来定义要测量距离的点

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

对于1,必须首先找到对象的中心。我建议使用以下线程:,然后您可以应用下面解释的相同逻辑

对于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值。因此,在
CNT
阵列中搜索另一个值为
y=12
的点,并使用
x1-x2
测量它们之间的距离

一,。假设我想从物体的质心向任意方向测量,直到绿色边界,我怎么能通过?2.从对象的左侧到右侧,但不超过绿色边界。选择任何点作为边界上的起点。。。…。。谢谢你,抱歉耽搁了。这似乎正是我想要的,我希望你擅长于此。为什么你不能给我一些片段,我可以这样保存坐标与各自的距离在excel格式,例如:
(12,23),(12,32),d=9
在三列
p1
p2
d
看一看