在iOS中检查子图像是否存在于图像中

我有两张图片,分别称为smallerImage和largerImage。现在,我想检查smallerImage是否是largerImage的一部分(或子图像)。我不知道如何进行检查。我想在iOS中完成这项工作。经过谷歌搜索,我发现使用openCV库是处理此类任务的最佳选择。但我不知道如何使用openCV库来完成我的任务。

简而言之,我想了解,

1) 查找/检查大图像中子图像的不同技术/方法/算法

2) 如何使用openCV库来执行(1)。(即如何使用它来检查大图像中的子图像)


回答:

你可以使用OpenCV的模板匹配算法…

请尝试一下…

https://github.com/Fl0p/OpenCV-iOS下载opencv2.framework

https://github.com/aptogo/OpenCVForiPhone/tree/master/OpenCVClient下载UIImage+OpenCV

导入文件opencv2/nonfree/nonfree.hpp, opencv2/highgui/highgui.hpp, opencv2/calib3d/calib3d.hpp, UIImage+OpenCV.h

使用以下函数进行图像匹配。

-(BOOL) matchImages:(UIImage*)largerImage Image2:(UIImage*)subImage{ cv::Mat tempMat1 = [largerImage CVMat]; cv::Mat tempMat2 = [subImage CVMat]; cv::Mat result; int match_method = CV_TM_SQDIFF_NORMED; //cv::cvtColor(tempMat1, debug, CV_GRAY2BGR); //cv::cvtColor(tempMat1, tempMat1, cv::COLOR_RGB2GRAY); //cv::cvtColor(tempMat2, tempMat2, cv::COLOR_RGB2GRAY); int result_cols =  tempMat1.cols - tempMat2.cols + 1; int result_rows = tempMat1.rows - tempMat2.rows + 1; result.create( result_cols, result_rows, CV_32FC1 ); /// Do the Matching and Normalize cv::matchTemplate( tempMat1,tempMat2 ,result,match_method); double minVal; double maxVal; cv::Point minLoc, maxLoc, matchLoc; cv::minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat() ); if( match_method == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED ) matchLoc = minLoc; else matchLoc = maxLoc;//NSLog(@"%d %d",tempMat1.cols,tempMat1.rows);NSLog(@"%f %f",minVal,maxVal); if (minVal < 0.25) {     NSLog(@"success");     //cv::rectangle(tempMat1,matchLoc,cv::Point(matchLoc.x + tempMat2.cols , matchLoc.y + tempMat2.rows),CV_RGB(255,0,0),3);     //UIImage *resImage = [[UIImage alloc] initWithCVMat:tempMat1];     //UIImageView * imageview = [[UIImageView alloc] initWithImage:resImage];     //[imageview setFrame:CGRectMake(0, 0, resImage.size.width, resImage.size.height)];     //[self.view addSubview:imageview];     return YES; } else {    return NO; }}

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注