所以,我試圖提取一些SURF關鍵點,但是我想強加這些關鍵點!所以,我把最後一個參數設置爲「true」,即「useProvidedKeypoints」。cvExtractSURF在useProvidedKeypoints = true時不起作用
此外,當我創建我的關鍵點時,我使用了默認的構造函數(因此有一些默認值)。我只改變點「pt」和我設置爲3的八度。
我在SURF中使用C++接口。但是我知道cvExtractSURF的問題是正確的,因爲我複製了我的部分代碼以幫助我進行調試。
當我調用該函數,設置爲true的最後一個參數,我得到這個錯誤:
OpenCV Error: Bad argument (Unknown array type) in cvarrToMat, file /home/widgg/opencv/trunk/modules/core/src/matrix.cpp, line 651
terminate called after throwing an instance of 'cv::Exception'
what(): /home/widgg/opencv/trunk/modules/core/src/matrix.cpp:651: error: (-5) Unknown array type in function cvarrToMat
我真的不知道我在做什麼錯了!
編輯:
這是一些代碼。首先,我是如何創建的關鍵點(給我留下了幾個信息,像layer_id的東西,但你的主要的想法):
for (json_pt_info_vector::iterator b_beg = beg->points.begin(); b_beg != b_end; ++b_beg)
{
int layer_id = b_beg->layer_id;
json_point_info_coord &jpic = b_beg->coord;
jpic.feature_id = features[layer_id].keypoints.size();
KeyPoint kp;
kp.octave = 3;
kp.pt.x = jpic.x;
kp.pt.y = jpic.y;
features[layer_id].keypoints.push_back(kp);
}
這裏的調用SURF:
SURF surf(300, 3, 4);
for (int i = 0; i < nb_img; ++i)
{
debug_msg("extract_features #4.1");
cv::detail::ImageFeatures &cdif = features[i];
Mat gray_image = imread(param.layer_images[i], 0); // 0 = force to gray scale!
debug_msg("extract_features #4.2");
vector<float> descriptors;
debug_msg("extract_features #4.3");
surf(gray_image, Mat(), cdif.keypoints, descriptors, true); // MUST BE TRUE TO FORCE THE PROVIDED KEYPOINTS
debug_msg("extract_features #4.4");
cdif.descriptors = Mat(descriptors, true).reshape(1, (int)cdif.keypoints.size());
debug_msg("extract_features #4.5");
gray_image.release();
debug_msg("extract_features #4.6");
images[i] = imread(param.layer_images[i]); // keep the image open
}
之後崩潰#4.3在調試信息中!
希望有幫助!
編輯2:
我換成CV某些部分:: SurfDescriptorExtracter。我用下面這一行取代了從4.3到4.5:
extractor.compute(gray_image, cdif.keypoints, cdif.descriptors);
所以,現在,還是有錯誤,但它位於其他地方,沒有必要與此相關的問題!
我們需要查看我們的代碼來幫助您。如果您提供自己的cv :: Keypoint向量,則應該使用(C++ api)cv :: DescriptorExtractor對象來計算描述符。 – Eric 2012-04-13 16:09:59
你如何使用cv :: DescriptorExtractor?另外,我希望我放的代碼可以幫助你一點! – widgg 2012-04-13 18:07:49