Как отобразить матрицы из трехмерного массива cv :: Mat через imshow, используя Opencv в Stack Overflow

У меня есть массив изображений следующим образом:

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();
1

Другие решения


По вопросам рекламы [email protected]