У меня есть массив изображений следующим образом:
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 измерениями массива. Не могли бы вы предоставить мне некоторую информацию о том, как решить эту проблему? Спасибо заранее.
Попробуйте что-то вроде этого:
// 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();