これは簡単なことのように思えますが、私はそれで多くの問題を抱えています。
ハフ変換により、画像から ROI を取得できると思います。しかし、私たちの 3D 世界と私の手の調整が不完全なため、ROI は歪んでいるか、透視投影されています。つまり、さらに分析するための実際の長方形ではありません。
この問題を解決する方法はありますか?
これは簡単なことのように思えますが、私はそれで多くの問題を抱えています。
ハフ変換により、画像から ROI を取得できると思います。しかし、私たちの 3D 世界と私の手の調整が不完全なため、ROI は歪んでいるか、透視投影されています。つまり、さらに分析するための実際の長方形ではありません。
この問題を解決する方法はありますか?
getPerspectiveTransform()
とを使用warpPerspective()
して、再び長方形にすることができます。
//cornerpoints contains the Point2f corners you detected in the image in clockwise ordering from top left
int rectheight=480;
int rectwidth=640;
Point2f rectpoints[4];
rectpoints[0]=Point2f(0,0);
rectpoints[1]=Point2f(0,rectwidth);
rectpoints[2]=Point2f(rectheight,rectwidth);
rectpoints[3]=Point2f(rectheight,0);
Mat pt=getPerspectiveTransform(cornerpoints,rectpoints);
Mat rectangle(rectheight,rectwidth,CV_8U);
warpPerspective(image,rectangle,pt,Size(rectheight,rectwidth));
ゴンザレスが彼の本で提案したように、形状署名を使用することを考えたことがありますか? 図形が既にセグメント化され、ラベル付けされている場合は、簡単かつ迅速に計算できます。