从轮廓位置生成边界框
Posted
技术标签:
【中文标题】从轮廓位置生成边界框【英文标题】:Produce bounding box from contour locations 【发布时间】:2012-03-18 17:44:55 【问题描述】:我是 OpenCV 的新手,所以如果我使用了不正确的术语,我深表歉意。我正在用 C 语言编写一个程序,该程序在图像中查找对象(在本例中为红色构建块)并提取图像的该部分并将其显示为新图像。我已经对图像进行了阈值处理以去除除红色之外的所有内容,并使用 cvDilate 稍微模糊结果以使对象更加清晰。然后我使用 OpenCV Contour 查找和绘图功能来定位和绘制块。
如何访问存储为 CvSeq* 的轮廓位置并从一组轮廓中获取最高和最低的轮廓值(其他红色对象可能仍然存在一些噪声),以便我可以进行边界盒子周围?
谢谢
【问题讨论】:
【参考方案1】:实际上,您不必手动执行此操作,因为 OpenCV 为您提供了此类功能。
查看cvMinAreaRect2 和cvBoundingRect。下面分别是他们的例子:minarea.c(有一些调试的东西,但应该给你如何使用它的要点)和generalContours_demo1.cpp(在 C++ 中,但应该很容易翻译)。
作为旁注,我肯定会建议使用 OpenCV 的 C++ API,因为它更容易理解并且具有更多功能。此外,由于 Mat
类会为您处理,因此您花在内存管理上的时间/代码要少得多。
希望有帮助!
【讨论】:
以上是关于从轮廓位置生成边界框的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 tf.image.draw_bounding_boxes 在原始图像上绘制边界框以显示检测到对象的位置?