Ошибка индекса ошибки при попытке сдвинуть изображение
У меня есть университетский проект, который требует от меня создания программы, которая обрабатывает изображение без использования библиотечных функций cv2. Я использую pycharm, и мое личное исправление - два для циклов, которые проходят через каждый пиксель и сдвигают их с коэффициентом Bx и By. У меня есть две проблемы с этим кодом:
- Я могу только установить коэффициент Bx на значение меньше 1 (в противном случае я получаю индекс 602 (моя ширина img) из-за ошибки границ).
- Программа будет запускаться только в том случае, если я установлю диапазон x в цикле for как высоту (вместо ширины), в противном случае я получу индекс 401 за пределами ошибки, который является моей высотой.
Я попытался переключить их и реализовать операторы if, чтобы сломаться, если значения выходят за пределы, но я не нашел ничего, чтобы работать.
import cv2
import numpy as np
img = cv2.imread('IPMP.jpg', 1)
height = img.shape[0]
width = img.shape[1]
print(height, width)
out = np.ones((height, width, 3), np.uint8)
def shearing(img, Bx, By):
for y in range(height):
for x in range(height):
img[int(x * By + y), int(x + y * Bx)] = img[x, y]
shearing(img, -0.5, 0)
cv2.imshow('shearedImage', img)
cv2.waitKey(0)
cv2.destryAllWindows()
Я открыт для других предложений по решению проблемы, не женатых на этом конкретном подходе. Заранее спасибо!