複数の画像から作成された点群があります。そこから平面を抽出しました。これも 3D 座標系です。これは、その平面の平面方程式を持っていることを意味します。しかし、元の画像のいずれにおいても、平面は正直交ビューを持っていません。つまり、平面は表示平面に平行ではありません。しかし、私は平面の 3D 雲を持っているので、それを XY 平面に投影したい、つまり、平面を表示平面に平行にして、そこから画像を作成したいのです。C++/OpenCV でそれを行うアルゴリズムまたは関数は何ですか?
質問する
966 次
1 に答える
1
あなたが何をしたいのか正確にはわかりませんが、これらが役立つかもしれません。私はチェス盤でこれを行いました:
std::vector<cv::Point2f> not_a_rect_shape; // In this vector you should save the x,y coordinates of your 3D rect
// the not_a_rect_shapecoordinates are from you source frame
// Define the destination image
quad = cv::Mat::zeros(300, 220, CV_8UC3); // the size is important, it depends on your application, I have to say that 300x220 isn't always the right one. you have to give more infomations!!
// these will be the parallel plane vector of point
quad_pts.push_back(cv::Point2f(0, 0));
quad_pts.push_back(cv::Point2f(quad.cols, 0));
quad_pts.push_back(cv::Point2f(quad.cols, quad.rows));
quad_pts.push_back(cv::Point2f(0,quad.rows));
transformationMatrix= cv::getPerspectiveTransform(not_a_rect_shape, quad_pts);// this is you transformation matirx
cv::warpPerspective(src, quad, transformationMatrix,quad.size(),CV_INTER_LINEAR,cv::BORDER_ISOLATED); // the flags could change
クアッド フレームは、あなたが探しているものである必要があります。役立つことを願っています
于 2013-09-06T10:40:49.817 に答える