ios - 使用 OpenCV 从 UIImage 中检测图像对象

标签 ios objective-c opencv image-processing object-detection

我是 OpenCV 的新手,但在谷歌搜索期间我开始了解对象检测和边缘检测。但是,仍然无法找到从屏幕截图中检测图像的正确方法。

例如,如果我像下面这样传递一个内部有照片的图像,那么我需要从源图像中提取该照片。

enter image description here

编辑 遵循@Amitay Nachmani 的回答后,我尝试将以下代码实现到第 4 步。

-(UIImage*)processImage:(UIImage*)sourceImage{

    cv::Mat processMat;
    UIImageToMat(sourceImage, processMat);

    cv::Mat grayImage;
    cvtColor(processMat, grayImage, CV_BGR2GRAY);

    cv::Mat cannyImage;
    cv::Canny(grayImage, cannyImage, 0, 50);


    cv::Vec2f lines2;
    std::vector<cv::Vec2f> lines;
    cv::HoughLines(cannyImage, lines, 1, CV_PI/180, 300);

    size_t sizeOfLine = lines.size();
    for(size_t i=0;i<sizeOfLine;i++){
        float rho = lines[i][0], theta = lines[i][1];

        if(rho==0){
            cv::Point pt1,pt2;
            double a = cos(theta), b = sin(theta);
            double x0 = a*rho, y0 = b*rho;
            pt1.x = cvRound(x0 + 1000*(-b));
            pt1.y = cvRound(y0 + 1000*(a));
            pt2.x = cvRound(x0 - 1000*(-b));
            pt2.y = cvRound(y0 - 1000*(a));

            cv::line(cannyImage, pt1, pt2, cv::Scalar(255,0,0),2.0);
        }
    }

    UIImage *result = MatToUIImage(cannyImage);
    return result;
}

从上面的代码中,我生成了如下图像。 enter image description here

编辑 2 我通过替换 Condition 修改了代码 if(rho==0)if(theta==0)

这导致了下图 enter image description here

但是,接下来要做什么?我对接下来的步骤有点困惑。

最佳答案

我不完全确定,但是您尝试过模板匹配技术吗? 如果您使用 C++ 编写 opencv: http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

我希望这有助于找到模板(您的源图像)和您的测试图像(屏幕截图)之间的互相关。

在下面的链接中,您将找到有关如何应用和绘制模板匹配的完整示例。

希望这对您有所帮助。

干杯。

乌奈。

关于ios - 使用 OpenCV 从 UIImage 中检测图像对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362819/

相关文章:

ios - Interface Builder 中的 "Width equals height"约束

ios - 从 CloudKit 获取不在设备上的记录的任何(或最佳)方法?

ios - xCode 安装旧的 iOS SDK

objective-c - iOS 6 中用于完成 block 的 dispatch_get_current_queue() 的替代方案?

objective-c - cocoa :带枚举键的字典?

ios - 从推送通知启动时启动 viewController 中的所有对象

c++ - Opencv 错误 : no GPU support (library is compiled without CUDA support)

ios - 怎么会这样“self.canDisplayBannerAds = YES;”使应用程序在iOS 8上崩溃?

c++ - OpenCV 错误:cv::cvtColor 中的断言失败 (scn == 3 || scn == 4),文件 ..\..\..\..\opencv\modules\imgproc\src\color.cpp,第 3737 行

python - : cannot connect to X server python cv2