Я пытаюсь повернуть и перевести изображение, используя OpenCV. Картинка хранится в объекте «оригинал». Я попробовал различные способы создания глубокой копии этого оригинала, потому что мне нужно 3 разных изображения: переведенное, повернутое и переведенное, а затем повернутое. Но если я запускаю свой код, я получаю только одну и ту же картинку, сначала повернутую, затем дополнительно переведенную и, наконец, еще раз переведенную и повернутую.
Я пытался прочитать исходное изображение в новых объектах, которые не изменили результат. Удивительно, что оригинальное изображение все еще может быть отображено с помощью pyplot. Я действительно не понимаю, в чем здесь проблема.
from __future__ import print_function
import numpy as np
import cv2
from matplotlib import pyplot as plt
import numpy as np
def rotate(image, angle):
rows,cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols/2,rows/2),angle,1)
return cv2.warpAffine(image, M, (cols, rows))
def translate(image, x, y):
rows,cols = image.shape[:2]
M = np.float32([[1,0,x],[0,1,y]])
return cv2.warpAffine(img,M,(cols,rows))
from copy import deepcopy
original = cv2.imread("Darth.jpg")
original2 = deepcopy(original)
original3 = deepcopy(original)
print(original.shape)
img = rotate(original, 15)
cv2.imwrite("Darth1.jpg", img)
img_trans= translate(original2, 20, 20)
cv2.imwrite("Darth2.jpg", img_trans)
img_trans_rot= rotate(translate(original3, 20, 20), 30)
cv2.imwrite("Darth3.jpg", img_trans_rot)
fig=plt.figure(figsize=(18, 16), dpi= 80, facecolor='w', edgecolor='k')
plt.subplot(1,4,1)
plt.imshow(original)
plt.subplot(1,4,2)
plt.imshow(img)
plt.subplot(1,4,3)
plt.imshow(img_trans)
plt.subplot(1,4,4)
plt.imshow(img_trans_rot)
Вывод скрипта: