تبدیل تصویر در یک 4 ضلعی به 4 ضلعی دیگر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تبدیل تصویر در یک 4 ضلعی به 4 ضلعی دیگر

+1 امتیاز

با سلام خدمت دوستان.

4 نقطه سبز را از تصویر مبدا دارم ابعاد تصویر مقصد را هم دارم چطور می تونم تصویر مبدا را به تصویر مقصد در OpenCV تبدیل کنم.

 

سوال شده فروردین 11, 1396  بوسیله ی in_chand_ta (امتیاز 75)   4 18 23

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

ابتدا از 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);

 

پاسخ داده شده فروردین 26, 1396 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اردیبهشت 14, 1396 بوسیله ی in_chand_ta
...