[英]Python: Return position and size of arbitrary/teeth shapes in image using OpenCV
我对图像处理和 object 检测非常陌生。 我想在下图中提取/识别 position 和牙齿尺寸:
这是我到目前为止使用 OpenCV 尝试过的内容:
import cv2
import numpy as np
planets = cv2.imread('model.png', 0)
canny = cv2.Canny(planets, 70, 150)
circles = cv2.HoughCircles(canny,cv2.HOUGH_GRADIENT,1,40, param1=10,param2=16,minRadius=10,maxRadius=80)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(planets,(i[0],i[1]),i[2],(255,0,0),2)
# draw the center of the circle
cv2.circle(planets,(i[0],i[1]),2,(255,0,0),3)
cv2.imshow("HoughCirlces", planets)
cv2.waitKey()
cv2.destroyAllWindows()
我不知道 go 从这里到哪里。 我想把所有的牙齿都鉴定出来。 我怎样才能做到这一点?
我真的很感激任何帮助..
请注意,牙齿结构或多或少是抛物线(倒置)。 如果您能以某种方式猜测定义这些斑点(牙齿)质心的抛物线形状,那么您的问题可以在合理的程度上简化。 我展示了一条穿过牙齿中心的红线。
我建议您按以下方式处理它:
sklearn.preprocessing.binarize
。structure_centroid
。 看到这个: 如何在二维 numpy 数组中居中非零值? .structure_centroid
的位置为中心。 我已经展示了这种极片的卡通图像(三角形半透明)。 覆盖完整的 360 度。 请参阅: polarTransform
库。centroid_path
。centroid_path
的圆圈上运行消除/选择算法。 使用阈值距离删除异常值。这应该给你一个很好的与圆圈的牙齿近似值。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.