gpt4 book ai didi

image-processing - 在 OpenCV 中检测对象并进行实时比较

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:34 24 4
gpt4 key购买 nike

我们正在制造一个自主机器人(在大学事件中),它会遵循特定的标志和方向并通过定向路线。机器人将在头部安装一个摄像头。它会按照在它前面的道路或墙壁上绘制的标志,并据此做出决定。标志将是绿色箭头(GO 信号),或红色 T's 作为停止标志。机器人将实时扫描这些符号并执行必要的操作。这些标志可以直接卡在前面的墙上,也可以画在前面的路上。

我曾尝试寻找必要的图像变换算法或方法,但我们对这个领域还很陌生。我寻求您的帮助,了解如何解决这个问题以及可能对我们有帮助的必要代码(假设我们是初学者)。

我研究了以下主题,但我很困惑:- OpenCV Object Detection - Center Point- How to recognize rectangles in this image?- http://www.chrisevansdev.com/computer-vision-opensurf.html (我无法使用它)

为该事件给出的一个提示是,我们可以将箭头建模为一个矩形和一个三角形放在一起,以判断三角形的中心是在该矩形的右侧(这意味着向右走)还是其他方向。对于 T 也是如此。

谢谢! :)

最佳答案

如果这些标志以前是已知的,您可以使用“通过特征检测识别对象”的方法。

我们的想法是,您有一张标志图片(箭头或 T),然后执行以下离线训练步骤:

1 - 特征检测(使用,SURF,FAST,...)

2 - 使用 SIFT、FREAK 等(从特征中)提取描述符...

然后是实时部分。对于每一帧,您都必须执行特征检测和描述符提取,但随后您需要对训练图像进行匹配以查看您得到的是哪个对象。一个实时工作的例子:

cv::FAST detector;
cv::FREAK descriptor;
BFMatcher matcher = BFMatcher(NORM_HAMMING,false);

detector.detect(frame,keypoints_frame);
descriptor.compute(frame, keypoints_frame,descriptors_frame);
matcher.match(descriptors_trainning, descriptors_frame);

这将是匹配的第一种方法,然后您需要改进并删除异常值。一些技术是

  • 比率测试

  • 交叉检查

  • RANSAC + 单应性

在这里你有一个完整的example .

关于image-processing - 在 OpenCV 中检测对象并进行实时比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916296/

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