2012-12-19 68 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