1

複数の画像から作成された点群があります。そこから平面を抽出しました。これも 3D 座標系です。これは、その平面の平面方程式を持っていることを意味します。しかし、元の画像のいずれにおいても、平面は正直交ビューを持っていません。つまり、平面は表示平面に平行ではありません。しかし、私は平面の 3D 雲を持っているので、それを XY 平面に投影したい、つまり、平面を表示平面に平行にして、そこから画像を作成したいのです。C++/OpenCV でそれを行うアルゴリズムまたは関数は何ですか?

4

1 に答える 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 に答える