چرخش تصویر در OpenCV - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرخش تصویر در OpenCV

0 امتیاز
سلام.

برای چرخش تصویر حول محورش از چه تابعی باید استفاده کنیم؟
سوال شده اردیبهشت 14, 1396  بوسیله ی korosh (امتیاز 155)   11 32 37

1 پاسخ

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

سلام.

1-محاسبه ماتریس چرخش با توجه به مرکز و زاویه چرخش

2-محاسبه bounding rect تصویر مبدا بعد از چرخش 

3-تنظیم ماتریس چرخش جهت شیفت دادن تصویر

4- استفاده تابع cv::wrapAffine جهت اعمال ماتریس چرخش بر روی تصویر ورودی و ارسال نتیجه روی تصویر خروجی

 

void rotateImage2(cv::InputArray _src, cv::OutputArray _dst, double angle, int flags, const cv::Scalar& back_color)
	{
		cv::Mat src = _src.getMat();
		
		cv::Point2f center(src.cols / 2.f, src.rows / 2.f);
		cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1.0);
		
		cv::Rect bbox = cv::RotatedRect(center, src.size(), (float)angle).boundingRect();
		
		rot.at<double>(0, 2) += bbox.width / 2.0 - center.x;
		rot.at<double>(1, 2) += bbox.height / 2.0 - center.y;


		cv::warpAffine(src, _dst, rot, bbox.size(), flags, BORDER_CONSTANT, back_color);


	}

 

پاسخ داده شده اردیبهشت 20, 1396 بوسیله ی hojat1 (امتیاز 875)   12 68 99
انتخاب شد اردیبهشت 26, 1396 بوسیله ی korosh
...