ابتدا از 4 نقطه تصویر سمت چپ ترانسفورم آن به 4 نقطه سمت راست را بدست بیارید با کد زیر:
cv::Mat getPerspectiveTransform(const std::vector<cv::Point>& contour, const cv::Size& size) {
if (!contous.size())
return cv::Mat();
std::vector<cv::Point2f> input_quad;
for (int i = 0; i < contour.size(); i++)
input_quad.push_back(contour[i]);
std::vector<cv::Point2f> output_quad;
output_quad.push_back(Point2f(0, 0));
output_quad.push_back(Point2f(size.width, 0));
output_quad.push_back(Point2f(size.width, size.height));
output_quad.push_back(Point2f(0, size.height));
return getPerspectiveTransform(input_quad, output_quad);
}
پس از آن تصویر سمت چپ را به تصویر سمت راست warp کنید تبدیل ما هم از نوع پرسپکتیو استفاده می کنیم. به صورت زیر:
auto trans_matrix = getPerspectiveTransform(left_points, right_size);
cv::Mat warpedImage = cv::Mat(right_size, CV_8UC1);
cv::warpPerspective(left_img, right_img, trans_matrix, right_size);