0

私は、2 つの同じ写真から同種の座標を見つけるプログラムを作成しようとしていますが、オブジェクトが回転または変換されてから、最初の写真を撮って 2 番目の写真に重ねます。

問題は、行列のサイズが異なるため、行列エラーが発生することです。

2番目の最初の画像を取得するために回転および変換するために適用する必要がある解決策を見つけました(2番目の行列に適用する必要がある値)

これは私のコードです:

    Size size(image2.cols, image2.rows);

    Mat dest = cv::Mat::zeros(image2.rows, image2.cols, CV_32FC2);

    warpAffine(image2, dest, t, size);

    namedWindow("manipulated img", CV_WINDOW_NORMAL);
    imshow("manipulated img", dest);

    Mat output;

    cout << image1.size() << endl;
    cout << dest.size() << endl;

    bitwise_and(dest, image1, output);

    //subtract(dest, image1, output);
    namedWindow("output img", CV_WINDOW_NORMAL);
    imshow("output img", output);

次のエラーが表示されます。

> [3722 x 2937] 
> [3722 x 2932] 
> OpenCV Error: Sizes of input arguments do
> not match (The operation is neither 'a rray op array' (where arrays
> have the same size and type), nor 'array op scalar' , nor 'scalar op
> array') in cv::binary_op, file C:\builds\master_PackSlave-win32
> -vc12-shared\opencv\modules\core\src\arithm.cpp, line 1573

問題が何であるかはわかっていると思いますが、解決策が何であるかはわかりません。

行列のサイズが異なります

image1.size() = [3722 x 2937] 
dest.size() = [3722 x 2932]

これを解決するにはどうすればよいですか?

4

2 に答える 2

1

ではなくdestのサイズにする必要があると思います。うまく対処できる可能性は非常に高いです。image1image2warpAffine

于 2015-12-11T14:02:07.520 に答える