0

我想在不同的窗口中多次显示相同的图像,为此我使用了 for 循环,但我只得到一个窗口显示。任何人都可以向我提供有关如何在多个窗口中显示输出图像的任何建议吗?以下是带有 C API 的 OpenCV 中的代码。在这里,我只是从 argv[1] 加载图像并尝试在 4 个不同的窗口中显示它。

#include "cv.h"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>

int main( int argc, char** argv ) {
int i;
IplImage* img = cvLoadImage( argv[1],1);
cvMoveWindow("Example1", 100, 100);
cvNamedWindow( "Example1", 1);
for(i =0; i<=4;i++) // for loop to display the same image in 4 different windows
{
 cvShowImage( "Example1", img );
}
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "Example1" );
}

PS我问过一个类似的问题,在OpenCV的不同窗口中显示多个图像之前没有解决,代码很难理解,所以我用更简单的代码尝试这个问题。

4

2 回答 2

1
for(i =0; i<=4;i++) //  hmm, i<=4 will actually run 5 times ...
{
 cvShowImage( "Example1", img );  // <-- same window name for all == only 1 shown
}

但是,丢弃 c api 并使用 c++ !。

#include "opencv2/opencv.hpp"

int main( int argc, char** argv ) {
    cv::Mat img = cv::imread( argv[1],1);
    for( int i=0; i<4; i++ ) // for loop to display the same image in 4 different windows
    {
       cv::String name = cv::format("Example%d",i);
       cv::namedWindow( name, 1);
       cv::imshow( name, img );
    }
    cv::waitKey(0);
}
于 2013-07-25T08:13:46.347 回答
1

干得好

int i;
IplImage* img = cvLoadImage("/home/khashayar/Downloads/bug14.png", 1);
cvMoveWindow("Example1", 100, 100);
cvNamedWindow("Example1", 1);
for (i = 0; i <= 4; i++) 
{
    char str[5] = "test";
    str[4] = i+48;
    cvShowImage(str, img);
}
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
于 2013-07-25T08:16:07.730 回答