Ошибка индекса ошибки при попытке сдвинуть изображение

У меня есть университетский проект, который требует от меня создания программы, которая обрабатывает изображение без использования библиотечных функций cv2. Я использую pycharm, и мое личное исправление - два для циклов, которые проходят через каждый пиксель и сдвигают их с коэффициентом Bx и By. У меня есть две проблемы с этим кодом:

  1. Я могу только установить коэффициент Bx на значение меньше 1 (в противном случае я получаю индекс 602 (моя ширина img) из-за ошибки границ).
  2. Программа будет запускаться только в том случае, если я установлю диапазон 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()

Я открыт для других предложений по решению проблемы, не женатых на этом конкретном подходе. Заранее спасибо!

0 ответов

Другие вопросы по тегам