使用Python和OpenCV测量图像中不规则有界对象的像素之间的距离
我不熟悉图像处理和python,但对测量两个轴(大轴和小轴)的像素距离感兴趣。关于如何创建边界和轴(长轴和短轴)的初始步骤,请确认这一点 我使用了上面链接中的代码片段来创建边界,方法是将使用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线与有界对象中另一条线之间
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
看一看