gpt4 book ai didi

python - 如何找到两个轮廓之间的距离

转载 作者:行者123 更新时间:2023-12-02 17:29:01 33 4
gpt4 key购买 nike

我正在做一个项目来查找金属环上的缺陷部件。我成功地在表面上找到了有缺陷的部件,但我无法检测到金属环内表面的突起。

我想用内外表面之间的距离来确定误差,但我不知道如何计算两个轮廓之间的距离。

sucsess, frame = capture.read()

kernel = np.ones((1,1),np.uint8)
blur = cv2.bilateralFilter(frame,6,140,160)
threshold = cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,21,16)
closing = cv2.morphologyEx(threshold,cv2.MORPH_CLOSE,kernel)
erosion = cv2.erode(closing,kernel,iterations =0)
contours, hierarchy = cv2.findContours(erosion,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
area = cv2.contourArea(cnt)
if area > 72000 and area < 80000:
cv2.drawContours(frame,cnt,-1,(0,0,0),3)
for cnt2 in contours:
area2 = cv2.contourArea(cnt2)
if area2 > 30 and area2 < 200:
cv2.drawContours(frame,cnt2,-1,(0,0,0),3)
cv2.imshow("frame",frame)
cv2.imshow("Erosion",erosion)
cv2.waitKey(0)

这是我的代码。第一个图像是我正在寻找的对象,第二个图像是侵 eclipse 的输出。

enter image description here

enter image description here

我的主要问题是我无法检测到内半径内的任何突起。

欢迎任何建议和帮助。

最佳答案

Measuring along rays from the centre

I thought to determine the error using the distance between the inner and outer surface, but I don't know how I can calculate the distance between the two contour.



一种方法是获取两个轮廓并计算质心,为您提供一个标称中心点。然后从这一点开始,将光线转换到 360 度,并计算与内轮廓和外轮廓的交点。 (例如欧几里得距离的最近点。)然后你在内表面和外表面上都有两个对应的半径,所以你可以从外表面减去内表面来得到环的厚度。使用与您需要的精度成正比的角度增量,一直计算它。厚度的标准偏差一直是突起的量度(数字越小越好!)。

My main problem is I am not able to detect any protrusion inside inner radius.



如果您只对内半径感兴趣,另一种方法是从内表面提取轮廓,然后再次计算质心以找到标称引用点。取从该中心到轮廓上每个点的平均距离,这将为您提供理想的拟合圆。计算从这个理想圆到实际轮廓上每个最近点的距离,这样就可以衡量扰动。

关于python - 如何找到两个轮廓之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056914/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com