我有一个摄像头(经过校准,使用OpenCV扭曲),面向平面自上而下。 曲面将为单一纯色
我希望能够识别表面上的物体并确定它们是什么。 这些物体是由相同合金制成的15毫米到100毫米不等的金属零件(颜色相同)。零件通常会自上而下地放置在表面上,但处理躺着的零件将是一个很好的选择。到目前为止,我所拥有的:
我希望算法以最简单的方式将所有3个螺钉识别为螺钉,并以像素为单位返回它们的轮廓。我还希望它能够区分完全不同的螺钉或类似颜色和尺寸的零件
我是OpenCV的新手,所以我真的很想听听有经验的人的正反两方面的技巧。你将如何有效地解决这个问题
不确定为什么会被否决,但经过一周的实验,我发现了一种在OpenCV中找到坚实背景上的对象的非常好的方法:
使用色度键校正功能cv2.inRange去除背景
反转颜色,使找到的对象为白色,其他所有对象为黑色,image=cv2。按位_not(image)
将轮廓检测与cv2.RETR\u列表、cv2.CHAIN\u近似值无参数一起使用,因为“外部”参数将不起作用:cv2.findContours(img、cv2.RETR\u列表、cv2.CHAIN\u近似值无)
返回所有找到轮廓的区域(像素数)和边界框。 在我的例子中,这两者的结合对于识别大多数2D对象来说是非常强大的
如果您的图片中有一个阿鲁科标签或其他具有已知真实世界mm尺寸的元素,则可以很容易地将面积转换为mm2。查找阿鲁科标签的功能:
arucoDict=cv2.aruco.Dictionary\u get(cv2.aruco.DICT\u 4X4\u 50) arucoParams=cv2.aruco.DetectorParameters_create() (角点、ID、拒绝)=cv2.阿鲁科检测标记(图像、阿鲁科ICT、, 参数=arucoParams)
尽管如此:
相关问题 更多 >
编程相关推荐