如何在OpenCV中使用Harris Corner从图像提取角

时间:2019-08-16 15:27:04

标签: swift opencv

我正在开发一个应用程序,该应用程序试图使用OpenCV的Harris Corner拍摄以前拍摄的照片中的角落。

因为我正在Swift中开发主框架,所以我使用了桥接头文件和.mm文件,使我可以使用OpenCV的HarrisCorner方法。

我认为我已经能够正确使用HarrisCorners,但是我无法实际设置阈值并将必要的点提取到数组中。

我正在遵循本教程https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_features_harris/py_features_harris.html,并在.mm文件Objective C ++中复制这些步骤。我唯一不知道如何复制的部分是设置分数的阈值。

本质上,我的问题是我不知道如何将这行代码从C#复制到Objective C ++

    # Threshold for an optimal value, it may vary depending on the image.
    img[dst>0.01*dst.max()]=[0,0,255]

这是我用来传递HarrisCorner的“图像”的代码

+ (UIImage *)harrisonCorners:(UIImage *)image {
    cv::Mat mat;
    [image convertToMat: &mat];

    cv::Mat gray, corner, dst;
    if (mat.channels() > 1) {
        cv::cvtColor(mat, gray, CV_RGB2GRAY);
    } else {
        mat.copyTo(gray);
    }

    cv::cornerHarris(gray, corner, 2, 3, 0.04); //Values I followed from the above tutorial

    return [self UIImageFromCVMat: corner];
}

如何将高于特定阈值的点提取到数组中?

感谢您的帮助。

0 个答案:

没有答案