2012-12-19 70 views
2

我想用opencv 2.4.3上的goodFeatureToTrack()函数在lena的灰色图像上......但是,我总是得到一个零大小的矢量存储功能cv::Point2f ...我有尝试使用零掩码也,但在这种情况下,应用程序挂起..我试着玩质量水平值从0.01到0.001。但是仍然是矢量的大小是zero..any想法...以下是我的代码..goodFeaturesToTrack给出了零大小的矢量

#include <iostream> 
#include <opencv2/core/core.hpp> 
#include <opencv2/features2d/features2d.hpp> 
#include <opencv2/video/tracking.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <vector> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat frameROI; 
    frameROI = imread("C:\\lena.jpg"); 
    std::vector<cv::Point2f> corners; 
    cvtColor(frameROI,frameROI,CV_RGB2GRAY); 

    //Mat mask(frameROI.size(), CV_8UC1); 
    //mask.setTo(Scalar::all(0)); 

    //goodFeaturesToTrack(frameROI,corners,10,0.001,10,mask,3,false,0.04); 
    goodFeaturesToTrack(frameROI,corners,10,0.001,10);//AFTER EDIT 
    cout<<"SIZE OF FEATURE VECTOR = "<<corners.size()<<endl; 

    imshow("VIDEO ROI",frameROI); 
    waitKey(); 

    return 0; 
} 

OUTPUT:

SIZE OF FEATURE VECTOR = 0 

编辑: AFTE Bob的建议,我省略了线为掩码和修改函数..但现在应用程序挂起后goodFeaturesToTrack函数被调用...任何想法?

+0

如果将掩码设置为全1,是否也会发生同样的情况? – Sassa

+0

Yaaa ....同样的事情发生在所有的1 ...我现在疯了...现在是我的opencv 2.4.3错了吗?我正在使用下载版本附带的预建库... –

回答

0

刚刚解决,而不是使用预建库ñ的dll的问题.... ....使用MSVC2008构建它,现在它的工作正常...检测到Bob指示的相同点。

2

通过将掩码设置为全零,基本上排除了搜索中的整个图像。您应该完全删除mask.setTo(Scalar::all(0));(因此将矩阵留空)或将其替换为mask.setTo(Scalar::all(1));(也就是说,要搜索整个图像中的要素;否则,应在感兴趣的区域设置1,否则为0)。

下图是你的代码对我的回报,如果我完全删除mask.setTo(Scalar::all(0));并得出几点:

enter image description here