【问题标题】:OpenCV: Using cvGoodFeaturesToTrack with C++ mat variableOpenCV:将 cvGoodFeaturesToTrack 与 C++ mat 变量一起使用
【发布时间】:2012-09-20 01:34:57
【问题描述】:

我正在尝试在 Visual Studio 2010 中使用 cvGoodFeatureToTrack 函数,图像类型为 Mat。我见过的大多数示例都使用IplImage 指针。 现在我有这个:

int w, h; // video frame size

Mat grayFrame;
Mat eigImage;
Mat tempImage;
const int MAX_CORNERS = 10;
CvPoint2D32f corners[MAX_CORNERS] = {0};
int corner_count = MAX_CORNERS;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;

w = CurrFrame.size().width;
h = CurrFrame.size().height;
cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cvGoodFeaturesToTrack(&grayFrame,
                      &eigImage,
                      &tempImage,
                      corners,
                      &corner_count,
                      quality_level,
                      min_distance,
                      NULL,
                      eig_block_size,
                      use_harris);

它编译但给我一个内存访问冲突。救命!

【问题讨论】:

    标签: c++ opencv vision


    【解决方案1】:

    作为一个起点,如果仍然使用 C++(就像您使用 cv::Matcv::cvtColor 建议的那样),那么为什么不使用 C++ 接口呢?

    这意味着使用cv::goodFeaturesToTrackcv::GoodFeaturesToTrackDetector,它们可以用于cv::Mat 和朋友,而不是从cv::MatIplImage* 进行不必要的转换。

    cv::Mat grayFrame;
    std::vector<cv::Point2f> corners;
    double quality_level = 0.1;
    double min_distance = 10;
    int eig_block_size = 3;
    int use_harris = false;
    
    const int MAX_CORNERS = 10;
    cv::cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
    cv::goodFeaturesToTrack(grayFrame,
                            corners,
                            MAX_CORNERS,
                            quality_level,
                            min_distance,
                            cv::noArray(), 
                            eig_block_size,
                            use_harris);
    

    【讨论】:

    • 谢谢。这行得通。我使用的是带有 NULL 的 goodFeaturesToTrack 函数,而不是 noArray()。但是你的回答解决了我的问题。
    猜你喜欢
    • 2012-11-08
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2014-09-05
    • 2011-09-16
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多