我在Mac OS ML下在OpenCV 2.4.2中調用EMD()
時遇到問題。OpenCV - Earth Mover的距離問題,icvInitEMD()
我有一類具有這樣的定義的屬性Mat _signature
:
Mat _signature(size,dim+1,CV_32F);
for (int i = 0; i<size; ++i){
_signature.at<float>(i,0) = weight;
for (int j = 1; j < dim+1; ++j){
_signature.at<float>(i,j) = vec[i].at<float>(0,j-1); // vec[i] is a line vector containing the position in R^dim
}
}
然後我有類的u
和v
2實例,並且當我打電話EMD(u._signature, v._signature, CV_DIST_L2);
它失敗OpenCV Error: One of arguments' values is out of range() in icvInitEMD, file /*SOME PATH*/OpenCV-2.4.2/modules/imgproc/src/emd.cpp, line 408
我看着源代碼,但無法弄清楚這是什麼失敗。我的論點似乎與文件所要求的一致。任何幫助將不勝感激。
你確定每個成員_signature當你打電話給emd時是否正確分配/設置? – remi
是的,我之前檢查過,現在雙重檢查。 '_signature'是正確的,並且是'size *(dim + 1)',因爲它應該是。 – Olotiar
很難告訴問題是什麼,我猜你可以在Debug中編譯OpenCV並使用調試器進入問題中。 – remi