2016-05-01 38 views
0

我有一個大小爲[2500 x 1]的矩陣A.現在我想在矩陣的開頭添加一個[1],這樣矩陣的新大小就是[2501 x 1]。下面的代碼我已經寫了:輸入參數的格式在push_back中不匹配opencv

cv::Mat X = cv::Mat::ones(1, 1, CV_64FC1); 
cv::Mat imgBlock = testImage(rect); 
     cv::Mat yy = imgBlock.clone(); 
     cv::Mat xx = yy.reshape(0, 2500); 
X.push_back(xx); 

但是,當我執行的代碼,OpenCV的是拋出一個錯誤:

C:\Users\ankitk\Documents\Visual Studio 2015\Projects\spt\Release>spt OpenCV Error: Formats of input arguments do not match() in cv::Mat::push_back, file C:\builds\master_PackSlave-win32-vc12-shared\opencv\modules\core\src\matrix.cpp, line 823 –

什麼可能我是做錯了什麼?

+0

請勿將文字發佈爲圖片。將錯誤消息作爲文本複製/粘貼到問題的正文中。 – Sabuncu

+0

C:\ Users \ ankitk \ Documents \ Visual Studio 2015 \ Projects \ spt \ Release> spt OpenCV錯誤:輸入參數的格式與cv :: Mat :: push_back中的()不匹配,文件C:\ builds \ master_PackSlave -win32-vc12-shared \ opencv \ modules \ core \ src \ matrix.cpp,第823行 – Ankit

回答

1

你得到該錯誤信息的原因是XtestImage的類型不匹配。您只能組合相同類型的矩陣(如documentation中所述)。

當你運行該代碼

std::cout << X.type() << std::endl; 
std::cout << imgBlock.type() << std::endl; 

你會得到兩個不同的號碼作爲輸出。

您可能需要更改X的類型以匹配圖像的類型或將testImage轉換爲CV_64FC1,然後才能追加數字。

相關問題