10

非常に簡単なことをしたいと思います。画像内の領域を新しい画像の新しい領域にコピーします。OpenCV 2.3チートシートでは、次の解決策を提案しています:

「例 3. 画像 ROI を別の画像に変換してコピーする」

Rect r(1, 1, 10, 20);
Mat dstroi = dst(Rect(0,10,r.width,r.height));
src(r).convertTo(dstroi, dstroi.type(), 1, 0);

私のコードは次のとおりです。

Mat frameO, frameS;

original >> frameO;
stabilized >> frameS;

Mat output(frameO.rows+40, frameO.cols*2+60, CV_32FC3);
output.setTo(0);            
Rect r(0,0, frameO.cols, frameO.rows);
Mat destROI = output(Rect(20,20, frameO.cols, frameO.rows));
frameO(r).copyTo(destROI);

frameO場所の出力で画像をコピーしたいだけですRect(20,20, frameO.cols, frameO.rows)
なぜこれが機能しないのか誰にでも教えてもらえますか?

4

2 に答える 2

18

実際、これらのコマンドは OpenCV 2.3 では機能しませんでしたが、2.4 リリースでは次のコマンドが正常に機能するようになりました。

Mat frame1 = imread(nameReading1);

Mat output(frame1.rows*2, frame1.cols*2, frame1.type());
output.setTo(0);

frame1.copyTo(output(Rect(0, 0, frame1.cols, frame1.rows)));

frame1これは、タイプが一致する限り出力にコピーされるため、出力を作成するときは注意してください。frame1によって定義された出力の ROI にコピーされRect(0, 0, frame1.cols, frame1.rows)ます。

于 2012-05-18T00:35:30.780 に答える