#python #image-processing #3d #rotation #image-rotation
#питон #обработка изображений #3D #вращение #вращение изображения
Вопрос:
У меня есть 36 изображений одной и той же машины, каждое из которых повернуто на ~10 градусов. Теперь мне нужно показать новое положение любых горячих точек, отмеченных на изображении, когда они повернуты на 10 градусов. Я попытался использовать приведенную ниже формулу, но она не дает правильных координат.
function rotate(x, y, xm, ym, a) { var cos = Math.cos, sin = Math.sin, a = a * Math.PI / 180, xr = (x - xm) * cos(a) - (y - ym) * sin(a) xm, yr = (x - xm) * sin(a) (y - ym) * cos(a) ym; return [xr, yr]; } rotate(526, 327, 640, 379, 10);
Размер исходного изображения: 1280×758.
Я визуализировал изображения с помощью opencv, ниже приведен результат:
img = cv2.imread('img.jpg') x,y = (526,327) image = cv2.circle(img, (x,y), radius=5, color=(0, 0, 255), thickness=-1) cv2_imshow(image)
Изображение 1 Точка доступа(красный круг) по адресу: 526 327
Изображение 2 Точка доступа после поворота на 10 градусов при: 536 307
Оригинальные изображения находятся здесь:
https://i.imgur.com/gO4SLZU.jpg
https://i.imgur.com/dJbCmcW.jpg
Может ли кто-нибудь сказать мне, что я здесь делаю не так ?
Комментарии:
1. Мы видим автомобиль и вращающийся круг «под углом», поэтому круг преобразуется в эллипс, а элементы автомобиля движутся по различным эллипсам в зависимости от расстояния до оси вращения и высоты от пола
2. Это полная 3D-проблема, которую вы не можете решить с помощью формулы 2D вращения.