3

2 つの画像をつなぎ合わせた後、3 番目の画像をつなぎ合わせようとしていますが、うまくいかないようです。

詳しく説明すると、opencv ドキュメント ( http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html ) に記載されているコードを使用して 2 つの画像をうまくつなぎ合わせ、この画像を取得しました。 http://i.stack.imgur.com/gqQjV.jpg

次に、ROIに関する多くの読み取りと問題の後、画像の黒い部分を削除してこの画像を取得しました。 ここに画像の説明を入力

今、同じコードを使用して 3 番目の画像 ( http://i.stack.imgur.com/nXD86.jpg ) をこれにステッチしようとしていますが、ステッチは機能しません。機能の一致は完全に機能します。

ここに画像の説明を入力

しかし、プログラムを実行した後、(ROI のため) 黒い領域が大きく、3 番目の画像がない同じ画像が得られます。(出力: http://i.stack.imgur.com/WzZA0.jpg )

ステッチされた画像の最後にある小さな黒い帯と関係があると考えたので、WarpPerspective ステートメントはステッチされた領域をマップしません。コード :

Mat result;
warpPerspective(img_scene, result, H, Size(img_scene.cols*2, img_scene.rows*2), INTER_CUBIC);
Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows*2),CV_8UC3);

Mat roi1(final, Rect(0, 0,  img_object.cols, img_object.rows));
Mat roi2(final, Rect(0, 0, result.cols, result.rows));
result.copyTo(roi2);
img_object.copyTo(roi1);

warpperspective の結果は、残りの領域ではなく黒い画像になります。

誰かが私が間違っている可能性がある場所とそれを修正する方法を教えてもらえますか? ありがとう

4

1 に答える 1

1

まず第一にあなたの

Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows*2),CV_8UC3);

になる必要があります

Mat final(Size(img_scene.cols + img_object.cols, img_scene.rows),CV_8UC3);

高さを上げる必要がないので。

ROIでコピーする場合は、上書きしないように注意してください。これは代わりに機能しますか?

Mat roi2(final, Rect(img_object.cols, 0, img_object.cols + result.cols, img_object.rows));
于 2013-02-20T22:41:25.713 に答える