«Проблема» в том, что вы используете здесь не numpy, а opencv, и хотя numpy array.resize () находится на месте, opencv img.resize () - нет.
Так что ваш вызов
img = cv2.resize(img, (250,100))
создает новый объект (изображение) с заданным размером.Так что здесь переменная img будет указывать на другой объект, отличный от вызова.
img2 = img
добавляет новое имя для исходного объекта.Здесь img2 и img ссылаются на один и тот же объект / фрагмент памяти.
img = cv2.resize(img, (250,100))
cv2.resize(img, (250,100))
создает новый объект, а имя img
теперь относится к этому новому объекту / фрагменту памяти.
print("img.shape: ", img.shape)
возвращает размер нового объектаи
print("img2.shape:", img2.shape)
размер исходного объекта, поскольку img2 по-прежнему ссылается на исходный объект.
Кстати, в numpy вызов a = a.resize(...)
будет действительно плохим - потому что a
будет затем None
(возвращаемое значение resize
) вместо массива с измененным размером.Там вы просто сделаете a.resize(...)