它的另一個OpenCV問題。我喜歡這個東西,但它會嚴重地驅使你瘋狂。沒有匹配函數調用cvGet2D
問題:我正在iOS上爲iPhone開發項目,是OpenCV。我不知道我是否有一個壞框架或什麼。
這工作:
cv::Canney()
cv::adaptiveThreshold()
但是,當我嘗試
"cvGet2D()" (without previous "cv::")
我得到的錯誤:調用 'cvGet2D'
當我只需鍵入「cvGet2D沒有匹配的功能()「它顯示在代碼提示中,暗示它至少找到頭文件?當我嘗試鍵入「cv :: get2D」或「cv :: cvGet2D」時,什麼都不顯示。我很沮喪,因爲我安裝的OpenCV框架仍然感覺像一個我不明白的黑盒子。
具體來說,你認爲它可以對開發與未開發以及鏈接正確的庫有什麼關係嗎?只是把東西扔到那裏。
非常感謝大家。我真的很感激,不能等到我有足夠的智慧回饋一些。
編輯:
因此,最新的嘗試澄清。
cv::cvGet2D(results,0,0);
新的錯誤是:在命名空間 'CV' cvGet2D 「「命名任何成員」;
這裏的任何想法
多個編輯:再次
感謝您的答覆.. 4小時後,還有幾杯咖啡,我仍然感到困惑,如果我搞砸了命名空間,爲什麼cv :: adaptiveThreshold這樣的東西可以正常工作,但cv :: get2D沒有顯示出來?它嚴重地導致了大腦出血。
所以,看起來我應該選擇C或C++版本的解決方案。建議您提供任何提示。我會補充說我在我的界面中有:#import <OpenCV/opencv2/opencv.hpp>
。然後導入核心庫,我可以看到cvGet2D的結構。再次感謝。
進展!
這些是我的新想法。
cv::Mat tempMat = [self.imageView.image CVMat];
cv::Mat testMat = tempMat(cv::Rect(0,0,2591, 1));
cv::Mat templateMat = tempMat(cv::Rect(0,0,100,1));
cv::Mat results;
cv::matchTemplate(testMat, templateMat, results, CV_TM_CCOEFF_NORMED);
typedef Vec<float, 2> Vec2f;
Vec2f& elem = results.at<Vec2f>(0 , 35);
float value1 = elem[0];
float value2 = elem[1];
因此,也許它應該使用?切?也許,但它似乎在做一些事情。新的問題,wtf做了一個matchTemplate輸出?它的1行,在這種情況下2492列。我想我的問題是,如果(0,35)的值超過一個數字? elem [0]和elem [1]代表什麼?正如你可能知道的那樣,我只是從一張圖片中取出一行,並用它的一小塊作爲模板。該照片包含垂直線條,所以我希望能夠確定線條彼此之間的距離。是的,它的錯綜複雜。但是,爲了這個討論的目的,實際上應該只有一行,並且一系列的列爲每個比較輸出一個相關係數,因爲它是正確的?
再次感謝你的男人,夥伴,夥計們,老闆們和你們所有聰明的羣衆!
現在你問一個完全不同的問題。 Stack Overflow遵循每題一個答案的風格,所以如果你不斷改變這個問題,對那些試圖幫助你的人來說是不公平的。正確的過程應該是:將問題還原爲前一個問題,選擇解決問題的答案,並在新線程中提出新問題。 – karlphillip