4

200x200 ピクセルの画像があるとします。基本的に200x200の画像を複製し、800x800の画像を塗りつぶす800x800ピクセルのバージョンが欲しいです(小さい画像を大きい画像に並べます)。

openCVでそれを行うにはどうすればよいですか?それは簡単に思えますが、パターンと同じタイプの別の cv::Mat を作成する方法がわかりませんが、サイズが大きい (キャンバス サイズ) か、元の 200x200 ピクセルの画像を取得することが可能かどうかはわかりません。行と列を増やしてから、ループを使用してコーナーを画像の残りの部分に貼り付けます。

私はopenCV 2.3 btwを使用しています。私は固定次元の画像に対してかなりの処理を行ってきましたが、行列の次元を大きくすることに関してはちょっとわかりません。

4

2 に答える 2

0

参考までに- @karlphillip の応答のブログでは、基本的な考え方はcvSetImageROIandを使用することcvResetImageROIです。どちらも C API です。

たとえば v2.4 および 3.x などの以降のバージョンではRect、目的の場所と寸法で を定義し、目的のセクションを として参照できますimg(rect)

C API の例 (関数型):

cvSetImageROI(new_img, cvRect(tlx, tly, width, height);
cvCopy(old_img, new_img);
cvResetImageROI(new_img);

クラスを使用する C++ API の場合:

Mat roi(new_img, Rect(tlx, tly, width, height));
roi = old_img;    // or old_img.clone()

C++ の別の方法 (画像をコピー):

old_img.copyTo(new_img(Rect(tlx, tly, width, height)))
于 2016-12-19T23:39:26.913 に答える