3

$100x100$ 要素の行列 A があります。$50x50$ 要素の別の行列 B があります。

要素のブロックを A にコピーしたい、たとえば、

A(Range(10,30),Range(10,30))  = B (Range(5,25),Range(5,25));

プログラムはコンパイルおよび実行されていますが、値はコピーされていません。これに対する解決策はありますか?

4

1 に答える 1

3

試す

cv::Mat A;
cv::Mat B;
cv::Mat C = A(cv::Range(10,30),cv::Range(10,30));
B (cv::Range(5,25),cv::Range(5,25)).copyTo(C);

コードで何が起こるかは、A への関数呼び出しが Mat ヘッダーを返し、B によって返される Mat ヘッダーと等しく設定されることだと思います。デフォルトでは、OpenCV は cv::Mat データをコピーしません。明示的に行う必要があります。 .

于 2013-01-02T18:32:06.027 に答える