10
私はパンスキャンのためだけに2枚の画像をステッチングしようとしています。私は "、キーポイントを発見したRANSACを使用してホモグラフィを見つけましたが、私は(私はOpenCVのに新たなんだ)これら2枚の画像を整列する方法を見つけ出すことはできません。今すぐコードopencvで2枚の画像をつなぎ合わせる
vector<Point2f> points1, points2;
for(int i = 0; i < good_matches.size(); i++)
{
//-- Get the keypoints from the good matches
points1.push_back(keypoints1[ good_matches[i].queryIdx ].pt);
points2.push_back(keypoints2[ good_matches[i].trainIdx ].pt);
}
/* Find Homography */
Mat H = findHomography(Mat(points2), Mat(points1), CV_RANSAC);
/* warp the image */
warpPerspective(mImg2, warpImage2, H, Size(mImg2.cols*2, mImg2.rows*2), INTER_CUBIC);
の一部と私はMat mImg1
をステッチする必要がすでにましどこに最初の画像がロードされ、Mat warpImage2
にはワープされた第2の画像がありますか?私にその方法を教えてもらえますか?また、歪んだ画像をカットして、ホモグラフィマトリックスを変更しなければならないことを知っています。 。これら2枚の画像はご協力いただきありがとうございます
編集:マーティン・ベケットの助けを借りて、私はこのコード
//Point a cv::Mat header at it (no allocation is done)
Mat final(Size(mImg2.cols*2 + mImg1.cols, mImg2.rows*2),CV_8UC3);
//velikost img1
Mat roi1(final, Rect(0, 0, mImg1.cols, mImg1.rows));
Mat roi2(final, Rect(0, 0, warpImage2.cols, warpImage2.rows));
warpImage2.copyTo(roi2);
mImg1.copyTo(roi1);
imshow("final", final);
0123を追加しました
、
ありがとうございました!これはうまくいった – Bodyboard
私はあなたの措置をしました。しかし、私は常に最終的なイメージをグレイイメージとして得ています。 !私のイメージは正しく歪んでいると確信しています。どんな助けもありがとう、 – dervish
@dervishはあなたのソース画像です3channel?そうでない場合は、ステッチする前にそれらを変換するか、結果をソースと同じタイプにしてから変換してください。 –