Глубокая копия не создает копию массива - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь повернуть и перевести изображение, используя 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)

Вывод скрипта:

Output of the script

...