OpenCV поворот изображения - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть изображение full_image_map, которое я повернул на определенную angle, используя следующий код:

Mat rotated_full_map_image;
Point2f src_center(full_map_image.cols/2.0F, full_map_image.rows/2.0F);    
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0);
warpAffine(full_map_image, rotated_full_map_image, rot_mat, full_map_image.size());

Я также нашел координаты точки на повернутом изображении, используя это:

Point rotated_centre;
Point2f p(some_x,some_y);  
rotated_centre.x = rot_mat.at<double>(0,0)*p.x + rot_mat.at<double>(0,1)*p.y + rot_mat.at<double>(0,2);
rotated_centre.y = rot_mat.at<double>(1,0)*p.x + rot_mat.at<double>(1,1)*p.y + rot_mat.at<double>(1,2);

Однако мое исходное изображение full_image_map намного выше, чем широко.Поэтому, когда я поворачиваю его, скажем, на 90 градусов и указываю размер повернутого изображения равным full_map_image.size(), большая часть повернутого изображения обрезается, поскольку оно пытается подогнать его только под упомянутый размер.Это похоже на этот ответ .

Мой вопрос: как правильно выполнить это вращение на любой заданный угол и при этом использовать тот же метод, чтобы найти координаты точки на повернутом изображении?Я использую OpenCV с C ++.

...