【问题标题】:object detection in iphone using openCV? template matching or haar?使用openCV在iphone中进行对象检测?模板匹配还是haar?
【发布时间】:2011-07-12 08:58:55
【问题描述】:

我需要做一个可以在图像中查找图像模式的 iphone 应用程序。 (比如this

经过无数次谷歌搜索,我觉得我唯一的选择是在为objectiveC移植的opencv中使用模板匹配功能。

我从this github 代码中找到了一个在objectiveC 中简单的opencv 项目的绝佳起点。

但它只使用了openCV中的边缘检测和人脸检测功能。我需要一个在 iPhone 的 ObjectiveC 中使用模板匹配函数“cvMatchTemplate”的 ObjectiveC 示例?

下面是我此刻的代码:(至少它没有给我错误,但是这段代码返回一个完全黑色的图像,我期待一个匹配区域会更亮的结果图像?)

    IplImage *imgTemplate = [self CreateIplImageFromUIImage:[UIImage imageNamed:@"laughing_man.png"]];
    IplImage *imgSource = [self CreateIplImageFromUIImage:imageView.image];        
    CvSize sizeTemplate = cvGetSize(imgTemplate);
    CvSize sizeSrc = cvGetSize(imgSource);       
    CvSize sizeResult = cvSize(sizeSrc.width - sizeTemplate.width+1, sizeSrc.height-sizeTemplate.height + 1);
    IplImage *imgResult = cvCreateImage(sizeResult, IPL_DEPTH_32F, 1);
    cvMatchTemplate(imgSource, imgTemplate, imgResult, CV_TM_CCORR_NORMED);
    cvReleaseImage(&imgSource);
    cvReleaseImage(&imgTemplate);        
    imageView.image = [self UIImageFromIplImage:imgResult];
    cvReleaseImage(&imgResult);

p/s:或者,我应该尝试使用 cvHaarDetectObjects 识别对象吗?

【问题讨论】:

  • 嗨,你能帮我完成一项任务吗
  • 嗨,对不起,我已经停止工作太久了......
  • 那么你的任务完成了吗?
  • 嗨,根据下面另一位用户的评论,他指出模板匹配不是我的目的的正确方向。他建议我使用 SIFT 或 SURF。
  • 嗨,我的任务是捕捉人类图像并制作它的侏儒(尺寸更短)图像...建议我最佳实践..plz

标签: objective-c opencv


【解决方案1】:

cvMatchTemplate 的结果是一个 32 位浮点图像。为了显示结果,您需要将其转换为无符号字符、8 位图像 (IPL_DEPTH_8U)。

CV_TM_CCORR_NORMED 方法产生 [0, 1] 之间的值,而 cvConvertScale 提供了一种简单的方法来进行缩放和类型转换。尝试将以下内容添加到您的代码中:

IplImage* displayImgResult = cvCreateImage( cvGetSize( imgResult ), IPL_DEPTH_8U, 1);    
cvConvertScale( imgResult, displayImgResult, 255, 0 );
imageView.image = [self UIImageFromIplImage:displayImgResult];

【讨论】:

  • 嗨,杰夫,感谢您的回答,等我回去工作后我会试试看。同时我也可以问你,为了实现类似于我发布的 YouTube 链接的东西,我应该坚持 matchtemplate 还是应该查看 cvHaarDetectObject?
  • 嗨,杰夫,感谢您的指点!我终于设法看到了 opencv 返回的一些有意义的模式(你可以在这里看到它们:encryptedpixel.wordpress.com/2011/07/13/346)。我创建了另一个问题来了解如何分析这些模式:stackoverflow.com/questions/6673684/…如果你有答案,请帮助我,谢谢!
  • 刚刚改变了观看该视频的方式,我建议采用不同的方法。我认为使用使用 SIFT 或 SURF 特征的对象识别类型方法会获得更好的结果。这些将为您提供一些缩放、旋转的鲁棒性,并且比模板匹配更具辨别力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2013-10-27
  • 1970-01-01
  • 2016-06-25
  • 2011-12-14
  • 1970-01-01
  • 2017-08-08
相关资源
最近更新 更多