ここから本文です

opencvで画像の上に座標指定をして画像を表示させたい

pal********さん

2013/1/3014:09:29

opencvで画像の上に座標指定をして画像を表示させたい

opencv2.3、visualstudio2010で、
大きな画像の上に、小さな画像を座標を指定して描画したいのですが可能でしょうか?

補足小さい画像はサイズも変更した上で表示したいです。

閲覧数:
9,289
回答数:
1

違反報告

ベストアンサーに選ばれた回答

oha********さん

2013/1/3117:57:01

OpenCvはあくまで画像処理のライブラリなので描画に関してはあまり得意ではないように思います
描画で2つの画像を重ねるというのは知って限りでは無理だった気がします(間違っていたらごめんなさい)
部分コピーすれば実現できるのではないでしょうか?

リサイズ
img1が元画像でimg2をリサイズしたいサイズで
cvCreateImage()で生成
元画像に半分にリサイズ
img2 = cvCreateImage(cvSize(img1->width/2,img1->height/2), img1->depth, img1->nChannels);
cvResize(img1, img2);

部分コピー
部分コピーはROIを使用しcvCopy()で実現できます

img1のx,y座標にimg2を貼り付け
貼り付け位置(x,y座標)+img2のサイズがimg1のサイズを超えないようにサイズ調整
int width = ( ((img2->width + x) > img1->width ) ? img1->width - x : img2->width );
int height = ( ((img2->height + y) > img1->height) ? img1->height - y : img2->height );
cvRect roi;
roi.x = x;
roi.y = y;
roi.width = width;
roi.height = height;
cvSetImageROI(img1, roi);
cvCopy(img2, img1);
cvResetImageROI(img1);

※元画像を残しておきたい場合はあらかじめcvCopy等でコピーしてコピーしたものに
小さい画像を貼り付けてください

質問した人からのコメント

2013/2/7 03:26:44

回答ありがとうございます。
そうですか。簡単な方法があればと思ったのですが、無いようですね。
回答いただいたコードはopencv1.xのものでしたが、
一応、ピクセルの色を直接コピーして何とか実現することはできました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる