2011-11-20 40 views
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を追加しました

答えて

8

あなたは、最終的なイメージでそれらをしたい位置に存在する画像の大きさのmake ROIs、その後、正しい合計サイズの新しい大きなイメージを作成して、関心領域に既存のイメージをコピーし、今働いています。

+0

ありがとうございました!これはうまくいった – Bodyboard

+0

私はあなたの措置をしました。しかし、私は常に最終的なイメージをグレイイメージとして得ています。 !私のイメージは正しく歪んでいると確信しています。どんな助けもありがとう、 – dervish

+3

@dervishはあなたのソース画像です3channel?そうでない場合は、ステッチする前にそれらを変換するか、結果をソースと同じタイプにしてから変換してください。 –

関連する問題