2013-04-07 114 views
2

我試圖創建一個矩陣,其列包含其他矩陣行的數據。然而,我的編譯器告訴我,雖然它的編號爲in the docs,但它沒有像Mat::copyTo(Mat)這樣的函數,我的IDE自動完成它(意味着它在標題中,並且標題包含在其中)。將一個矩陣複製到另一個列中

binary.row(selectedRow).reshape(1).copyTo(data.col(0)); 
reduced.row(selectedRow).reshape(1).copyTo(data.col(1)); 

任何想法爲什麼會失敗?我厭倦了OpenCV的InputArray/OutputArray風格,我希望他們只是將方法簽名與實際期望的方法匹配,而不是依賴編譯時/運行時錯誤。

編輯:我知道我可以只運行一個for環和複製數據,並用它做,但應該有一個簡單的方法來做到這一點使用OpenCV的方法。

EDIT2:這裏是實際的錯誤:

/usr/include/opencv2/core/core.hpp:1651:10: note: void cv::Mat::copyTo(cv::OutputArray) const 
/usr/include/opencv2/core/core.hpp:1651:10: note: no known conversion for argument 1 from 'cv::Mat' to 'cv::OutputArray {aka const cv::_OutputArray&}' 
/usr/include/opencv2/core/core.hpp:1653:10: note: void cv::Mat::copyTo(cv::OutputArray, cv::InputArray) const 
/usr/include/opencv2/core/core.hpp:1653:10: note: candidate expects 2 arguments, 1 provided 
+1

究竟是什麼錯誤? – 2013-04-07 18:03:34

+0

您是否告訴編譯器在哪裏搜索頭文件?你有沒有告訴你的編譯器有關其他頭文件? – 2013-04-07 18:29:07

+0

您是否嘗試*閱讀*鏈接的文檔? 'CopyTo'不會將'Mat'作爲參數;它需要一個'OutputArray'。 – WhozCraig 2013-04-07 18:48:36

回答

1

檢查返回的錯誤訊息,既不copyTo()可能允許覆蓋的似乎是一個很好的匹配。

雙參數覆蓋顯然不起作用。單參數覆蓋似乎需要一個非const引用作爲複製目標(這在考慮它時肯定有意義)。也就是說,data.col(0)data.col(1)似乎是返回const引用,它們不可寫,因此也不是很好的匹配。

除非data可以返回一個可寫入的對象,否則您可能必須使用中間對象,然後是數據列的setter,除非您希望成爲您的副本目標。

祝你好運。

相關問題