Ошибка индекса ошибки при попытке сдвинуть изображение - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть университетский проект, который требует от меня создания программы, которая обрабатывает изображение без использования библиотечных функций 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()

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

...