Как уменьшить изображение любого разрешения до четверти размера путем усреднения пикселей в numpy?
То, что я придумал в ходе исследования, работает только для изображений, имеющих квадратную форму (то есть с 512 х 512 до 128 х 128), но не будет работать с изображениями разных размеров (то есть с 2400 х 1800 до 600 х 450 ). В этих случаях я получаю IndexError: индекс 450 выходит за пределы для оси 1 с размером 450 .
Я пытаюсь выполнить эту задачу с помощью numpy манипулирования массивом и без установки других пакетов и библиотек.
Я исследовал функцию
numpy.mean()
, но я не не знаю, как использовать его для решения этой проблемы.
import cv2
import numpy as np
def quarter_res_avg(im):
original_width = im.shape[1]
original_height = im.shape[0]
width = original_width / 4
height = original_height / 4
resized_image = np.zeros(shape=(width, height, 3), dtype=np.uint8)
scale = 4
for i in range(width):
for j in range(height):
temp = np.array([0, 0, 0])
for x in range(scale):
for y in range(scale):
temp += im[i*scale+x, j*scale+y]
resized_image[i, j] = temp/(scale*scale)
return resized_image
im = cv2.imread('Lenna_test_image.png', 1)
cv2.imwrite('Lenna_test_image_avg.png', quarter_res_avg(im))
Любые идеи очень ценятся.
Спасибо.