2015-04-21 85 views
-1

顯示使用opencv從3D CV ::墊陣列經由imshow矩陣我有圖像的陣列如下:如何在C++

int width = 5, height = 4, n = 3; // example --> 3 images of size 5x4 
int sz[] = {width, height, n}; 
cv::Mat array(3, sz, CV_8UC1, cv::Scalar::all(0)); 

現在我想顯示圖像。我想是這樣的:

char winName[20]; 
for (int i = 0; i < n; i++) 
{ 
    sprintf(winName, "image %d", i); 
    cv::imshow(winName, array.data[i]); 
} 

這是我從這裏得到:http://answers.opencv.org/question/28184/show-many-images-in-different-windows-in-a-loop-using-one-imshow-command/

我想過使用一個for each, in表達,但不能得到,跑步。我不太確定如何管理陣列的3個維度。你能否給我提供一些關於如何解決這個問題的信息?提前謝謝了。

回答

1

嘗試這樣:

// create a vector of Mats 
std::vector<cv::Mat> images(3); 

// initialize each image somehow, for example with black images 
for(size_t i = 0; i < images.size(); ++i) 
    images[i] = cv::Mat::zeros(4, 5, CV_8U); 

// show each image 
for(size_t i = 0; i < images.size(); ++i) { 
    char winName[20]; 
    sprintf(winName, "image %d", i); 
    cv::imshow(winName, images[i]); 
} 

// wait until a key is pressed before exiting 
cv::waitKey(); 
+0

我會嘗試了這一點。然後,我只需要更改代碼的其他部分。謝謝。 – jkl

+0

我試過了,我可以將圖像可視化,但現在我在圖像內寫入內容時遇到了問題。我的代碼如下所示:'images [index] .at (x,y)= whatever();'。原則上這是正確的嗎? (如果是的話,我必須改變'x'和'y') – jkl

+0

好的。我解決了它。代碼很好,只是'x'和'y'不正確。它必須是'(y,x)'。非常感謝您的支持! :) – jkl