首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像处理中的形状检测

图像处理中的形状检测
EN

Stack Overflow用户
提问于 2010-04-04 20:32:07
回答 2查看 1.3K关注 0票数 1

我正致力于检测任何物体的形状。我有一个二进制图像,其中背景是白色的,前景/对象是黑色的。我需要检测前景中黑色物体的形状。

我该怎么做呢?形状可能是人/车/盒子等,请帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-06 10:16:20

安非他玛说,我不确定你的最终目标是什么,但检测形状的一个非常常见的方法是使用cvFindContours,它给出一个二进制图像,并返回一组“CvContour”(实际上是一个cvSeq)。通过对图像进行阈值处理(cvThreshold),可以非常简单地检索二值图像。查看opencv src目录的sample/中的contours.c示例。也请检查此链接:

Noah (2009) opencv tutorial

下面的示例代码将为您提供一个大致的概念:

代码语言:javascript
复制
cvThreshold( g_gray, g_gray, g_thresh, 255, CV_THRESH_BINARY );
cvFindContours( g_gray, g_storage, &contours );
cvZero( g_gray );
if( contours ){
    cvDrawContours(
        g_gray,
        contours,
        cvScalarAll(255),
        cvScalarAll(255),
        100 );
}
cvShowImage( "Contours", g_gray );

一旦您有了轮廓的编码,您就可以使用cvMatchShapes,它采用2个轮廓并返回这些轮廓之间的相似性度量。

希望这种方法能为您提供一个良好的开端!

票数 2
EN

Stack Overflow用户

发布于 2010-04-14 15:24:03

对于精确的形状检测,您需要使用haar检测或至少K近邻。Haar检测可以非常准确,但它需要很长时间才能设置。K近邻更容易设置,但不是很准确。查看this youtube video。这家伙正在使用KNN来检测不同的手势。请注意,对比图像基本上是一个黑色斑点。KNN的缺点是它需要更多的资源来运行程序,但是对于haar检测,当您使用haartraining.exe创建级联xml文件时,主要的处理已经完成了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2574369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档