2014-07-20 130 views
0

我正在基於使用OpenCV的模板匹配項目。在OpenCV中的圖像陣列

如何製作一組圖像?

cv::Mat ref_temp[7]; // Array Declaration as we do in c/c++ 
cv::Mat image = cv::imread("ref.jpg",1); 
cv::Mat ref_image; 

image.copyTo(ref_image); 

cv::Mat ref_temp(1) =(ref_image, cv::Rect(550,85, 433, 455)); 
cv::Mat ref_temp[2] =(ref_image, cv::Rect(1042,85,433, 455)); 
cv::Mat ref_temp[3] =(ref_image, cv::Rect(1528,85,433, 455)); 
cv::Mat ref_temp[4] =(ref_image, cv::Rect(65, 1010, 423, 442)); 
cv::Mat ref_temp[5] =(ref_image, cv::Rect(548, 1010, 423, 442)); 
cv::Mat ref_temp[6] =(ref_image, cv::Rect(1025, 1010, 423, 442)); 
cv::Mat ref_temp[7] =(ref_image, cv::Rect(1529, 1010, 423, 442)); 

我不確定我是否以正確的方式做。 請幫幫我。

+0

你能告訴我們更多關於你想完成什麼?你是否得到編譯器或運行時錯誤?如果是這樣,這些錯誤是什麼意思?我不熟悉模板匹配。你想創建一個縮放到不同尺寸的圖像陣列:? – ahoffer

+0

實際上,我使用了一個名爲ref_image的參考圖像,然後我從該圖像中獲取參考模板(按照座標)。現在,我從參考圖像中剪下了8幅不同的圖像。我想將這些圖像存儲在一個數組中。 –

+0

@ahoffer:我不熟悉opencv編碼方法。 –

回答

1

首先,從ref_image,其中所述ROI的左上角是(550,85),以及寬度和高度創建的關注區域(ROI)的區域爲443 & 455:

cv::Mat ref_img_roi(ref_image, cv::Rect(550, 85, 433, 455); 

接下來,分配的投資回報率,以您的圖像陣列:

ref_temp[0] = ref_img_roi; 

現在,ref_temp[0]引用在ref_imageref_img_roi指定的區域。

在您的代碼中,C++數組的用法不正確。使用ref_temp時,您不必輸入cv::Mat。而且,數組的索引應該是0〜6 下面的代碼將工作:

cv::Mat ref_temp[7]; 
cv::Mat image = cv::imread("ref.jpg",1); 
cv::Mat ref_image; 
image.copyTo(ref_image); 

ref_temp[0] = cv::Mat(ref_image, cv::Rect(550, 85, 433, 455)); 
ref_temp[1] = cv::Mat(ref_image, cv::Rect(1042, 85, 433, 455)); 
ref_temp[2] = cv::Mat(ref_image, cv::Rect(1528, 85, 433, 455)); 
ref_temp[3] = cv::Mat(ref_image, cv::Rect(65, 1010, 423, 442)); 
ref_temp[4] = cv::Mat(ref_image, cv::Rect(548, 1010, 423, 442)); 
ref_temp[5] = cv::Mat(ref_image, cv::Rect(1025, 1010, 423, 442)); 
ref_temp[6] = cv::Mat(ref_image, cv::Rect(1529, 1010, 423, 442)); 
+0

user3207049 - 如果你真的喜歡它,你會提高@mcchu的答案 – Bull