9

すべて同じ寸法のオブジェクトにいくつかの画像があります。それらすべてを保持する 1 つの bix オブジェクトをMat作成したいと思います。cv::Mat

したがって、新しいマトリックスの次元は次のようになります: widthNew = widthOld x number of matrix、高さは変更されません。

このようなコピーは、次を使用して実行できることがわかりました。

void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL)

しかし、3 つの行列に対して 3 つの異なる時間でマスクを定義するにはどうすればよいでしょうか。

よろしく、 モアタズ

4

3 に答える 3

14

これを行う簡単な方法があると思います。OpenCVには、 および と呼ばれる文書化されていないメソッドがhconcat()ありvconcat()ます。1 つ目は水平方向の連結用で、2 つ目は垂直方向の連結用です。

次のように使用できます。

Mat A, B;
... //In this part you initialize the Mat A and Mat B.

Mat H, V; //These are the destination matrices
hconcat(A, B, H);
vconcat(A, B, V);

これが役立つことを願っています。

于 2015-12-16T15:58:47.963 に答える
6

roi を使用して、実際には宛先イメージの領域であるイメージを定義し、そこにコピーします。別の ROI 内で cv::Mat をコピーするを参照してください。

于 2012-06-13T16:42:47.000 に答える
1

おそらく、 のソース コードcvShowManyImages()を確認することをお勧めします。これは、複数の画像を入力として受け取り、それらを単一の 3 チャネル画像に連結して表示する関数です。

使用される方法は、Single Big 画像の ROI を設定してから、入力画像のサイズを変更して、Single Big 画像にコピーすることです。

他の画像を保持するのに十分な大きさの宛先画像を作成する場合、それらのサイズを変更する必要はありません。

IplImage<->間の変換方法を知りたい場合は、このスレッドcv::Matを確認してください。

于 2012-06-13T21:14:07.183 に答える