对于一个原型,我需要建立一个齿轮的三维模型。这有很多牙齿。 所以我试着用OpenCV和Python计算它们。我找到了this(只有?)这篇文章解释了如何在C++中完成。在
我正在按照步骤操作,现在这是我编写的代码。在
import numpy as np
import cv2
img = cv2.imread('C:\\Users\\Link\\Desktop\\gear.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
kernel = np.ones((3, 3), np.uint8)
img_erosion = cv2.erode(thresh, kernel, iterations=1)
edges = cv2.Canny(img_erosion, 50, 150)
img_dilate = cv2.dilate(edges, kernel, iterations=1)
cv2.imshow('i', thresh)
cv2.waitKey(0)
cv2.imshow('i', img_erosion)
cv2.waitKey(0)
cv2.imshow('i', edges)
cv2.waitKey(0)
cv2.imshow('i', img_dilate)
cv2.waitKey(0)
阻止我继续前进的是:图像在某个时刻变得一团糟。在
这是我正在研究的原件:
这是image_dilate
的输出
如您所见,底部的牙齿没有正确显示,可能是因为原始图像中的阴影。我怎样才能摆脱这个?在
解决了。。在
这是密码。数错了一个,因为右边的一颗牙齿比其他牙齿低,而且它自己找到了两个点。不知道为什么会这样。在
而且,它是用另一个图像制作的。这不是我在上面发布的来源,只要它是低清晰度的。在
因为你的源图像比链接你的帖子更干净,所以你可以在最大区域轮廓上做近似运算,然后得到一半的点数,结果是
84
。在样本代码:
结果:
相关问题 更多 >
编程相关推荐