У меня есть задание для масштабирования / изменения размера изображения без использования функций из внешних библиотек, и мне нужно создать алгоритм самостоятельно, я искал, но код, который я нашел на разных форумах, не сработал, но я подошелс кодом, который, как я полагаю, будет работать, но я получаю ошибку индекса на боковой ноте, мне также нужно сделать прямое и обратное отображение в отношении масштабирования изображения.
Мой код можно увидеть ниже
import cv2 as cv
img = cv.imread('Scale.jpg', 1)
cv.imshow('unscaled', img)
h,w = img.shape[:2]
print(h)
print(w)
def resizePixels(pixels,w1,h1,w2,h2) :
retval = [w2,h2]
# EDIT: added +1 to remedy an early rounding problem
x_ratio = (int)((w1<<16)/w2) +1
y_ratio = (int)((h1<<16)/h2) +1
#int x_ratio = (int)((w1<<16)/w2)
#int y_ratio = (int)((h1<<16)/h2)
#two = int(x2,y2)
for i in range (h2):
i += 1
for j in range(w2):
j += 1
x2 = ((j*x_ratio)>>16)
y2 = ((i*y_ratio)>>16)
retval[(i*w2)+j] = pixels[(y2*w1)+x2]
return retval;
dst = resizePixels(img,h,w,300,300)
#cv.imshow('Resize',dst)
cv.waitKey(0)
РЕДАКТИРОВАТЬ: Это Traceback я получаю
Traceback (most recent call last):
File "C:/Users/Asus/PycharmProjects/Scaling/Scaling.py", line 27, in
<module>
dst = resizePixels(img,h,w,300,300)
File "C:/Users/Asus/PycharmProjects/Scaling/Scaling.py", line 23, in
resizePixels
retval[(i*w2)+j] = pixels[(y2*w1)+x2]
IndexError: list assignment index out of range
Изображение, которое я использую для масштабирования