0

同じ画像を異なるウィンドウに複数回表示したいのですが、for ループを使用しましたが、ウィンドウ表示は 1 つしかありません。出力画像を複数のウィンドウに表示する方法について誰か提案してもらえますか? 以下は、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 に答える