OpenCV 2.4.5 を使用しています。2 つの画像の一致する点の間に線を引きたい。コードは次のとおりです。
const int &w=image1.cols;
for (size_t i = 0; i<good_matches.size(); i++ )
{
//-- Get the keypoints from the good matches
img1.push_back(keypoints1[good_matches[i].queryIdx].pt);
img2.push_back(keypoints2[good_matches[i].trainIdx].pt);
circle(image1,img1[i],20,Scalar(255,0,0),5);
circle(image2,img2[i],20,Scalar(0,255,0),5);
line(image1,img1[i],Point2f(img2[i].x+w,img2[i].y),Scalar(255,255,255),5);
line(image2,Point2f(img1[i].x-w,img1[i].y),img2[i],Scalar(255,255,255),5);
}
行の長さwithin the bounds of image
がそれ以上16400
になると、奇妙な結果が得られます。ポイント間の直線ではなく、対応する 2 つのポイント間の三角形または破線のように見えます。
したがって、合計線ではなく線分を描画する必要があります。しかし、それはあまり便利ではありません。線画アルゴリズムの制約によるものなのか、どうにか修正できるのでしょうか?