首页 > 解决方案 > 尝试剪切图像时出现索引错误问题

问题描述

我有一个大学项目,要求我制作一个无需使用 cv2 库函数即可剪切图像的程序。我正在使用 pycharm,我的个人修复是两个 for 循环,它们通过每个像素并用 Bx 和 By 的因子剪切它们。这段代码有两个问题:

  1. 我只能将 Bx 因子设置为小于 1 的值(否则我会得到索引 602(我的 img 宽度)超出范围错误)。
  2. 只有当我在 for 循环中将 x 的范围设置为高度(而不是宽度)时,该程序才会运行,否则我会得到一个索引 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()

我对解决问题的其他建议持开放态度,而不是与这种特定方法结合。提前致谢!

标签: pythonpycharmindex-errorshearsort

解决方案


推荐阅读