OpenCVのstitcherモジュールを使って画像をスティッチしてみました。以下は私のコードです(コア部分)。
int main()
{
Mat img1 = imread("5.jpg");
Mat img2 = imread("6.jpg");
//Mat img3 = imread("11.jpg");
imgs.push_back(img1);
imgs.push_back(img2);
//imgs.push_back(img3);
Mat pano; // Mat to store the output pano image
Stitcher stitcher = Stitcher::createDefault(try_use_gpu); // create a Stitcher object
Stitcher::Status status = stitcher.stitch(imgs, pano); // stitch the input images together
cout << "hello" <<endl;
if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << int(status) << endl;
return -1;
}
imshow("pano",pano);
imwrite(result_name, pano); // write the result to the output image
waitKey(0);
return 0;
}
上記のコードの「imgs」は、Mat 型のベクターです。
これに似た類似のコードをネットでたくさん見ましたが、なぜ私のコードに入力画像のサイズに大きな制限があるのか わかりません。入力画像のサイズが 800 * 600 程度であれば問題なく動作します。しかし、サイズが 650 * 650 または 1280 * 640 などの場合、コンソール プロンプトはプログラムの終了後すぐに閉じます。また、「panoResult.jpg」には画像が保存されません。また、画像も表示されません。デバッグ中にVisual Studio 2010 が表示Image_stitching2.exe: Native' has exited with code -1 (0xffffffff).
されます。
誰でもこれを手伝ってもらえますか?私はこれを修正するためにすでに数時間を費やしていますが、正しくないため、これについて本当に進歩する必要があります. ヒントやヘルプは私にとって素晴らしいものです。