画像の複数表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
median

画像の複数表示

#1

投稿記事 by median » 14年前

C++でOpenCVの勉強をしていてわからないことがあったので質問しました。
同一画像を同一ウインドウに同時に表示するプログラムを作成したいと思い、以下のようなプログラムを
試しに作ってみたのですが画像が1枚しか表示されませんでした。

ちなみに画像のサイズは300*450です。
原因が分からず困っています。よろしくお願いします。

コード:

 
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>

int main(){

IplImage* c3 = cvLoadImage("face2.bmp", CV_LOAD_IMAGE_COLOR);
IplImage* faceImg;
int WIDTH = c3->width;
int HEIGHT = c3->height;

c3 = cvLoadImage("face2.bmp", CV_LOAD_IMAGE_COLOR);
	CvRect roi = cvRect(0, 0, 0, 0);

    faceImg = cvCreateImage(cvSize(WIDTH*3, HEIGHT*3), IPL_DEPTH_8U, 3);
    cvZero(faceImg);
	
	for(int i=0;i<2;i++){
				for(int j=0;j<2;j++){
			
            roi.x = j * WIDTH;
            roi.y = i * HEIGHT;
            roi.width = c3->width;
            roi.height = c3->height;
            cvSetImageROI(faceImg, roi);
            cvCopy(c3, faceImg);
			//cvResetImageROI(faceImg);
				}
	}
	

//cvNamedWindow("Skinfilter",CV_WINDOW_AUTOSIZE);
cvShowImage("image",faceImg);
cvWaitKey(0);
cvResetImageROI(faceImg);
return(0);
}

アバター
ゆーずぃ
記事: 62
登録日時: 14年前
住所: 埼玉県

Re: 画像の複数表示

#2

投稿記事 by ゆーずぃ » 14年前

highguiは使ったことが無いので何とも言えませんが、
cvShowImageが一つしかないのが原因では?

アバター
Justy
副管理人
記事: 122
登録日時: 15年前
住所: 神奈川県

Re: 画像の複数表示

#3

投稿記事 by Justy » 14年前

median さんが書きました:画像が1枚しか表示されませんでした。
  1. 2カ所のコメントアウトを解除して下さい。
    (cvResetImageROI関数は最後の1回だけでいいので、cvNamedWindow関数の上あたりに持ってきた方がいいでしょう)
  2. cvNamedWindow関数と cvShowImag関数のウインドウ名を合わせて下さい。
  3. "face2.bmp"が2回読み込まれているのに1回も解放されていないです。

median

Re: 画像の複数表示

#4

投稿記事 by median » 14年前

ゆーずぃさん
Justyさん

返信どうもありがとうございました。

コメントアウトしていたNamedWindowを解除してwindow名を変更した結果、実行できました。

掲載したプログラムは友達のプログラムをコピーしたものなのですが、NamedWindow関数が元からなく、
友達の環境ではなぜか実行もできていたので完全に見落としてました。

閉鎖

“C言語何でも質問掲示板” へ戻る