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