我正在尝试使用cv2将图像分割成多个块。我的问题是cv2.imread
可以识别我的身高和宽度,但是当我使用这些值计算x和y时,我的结果是0。
我在运行代码时也收到此错误:
“切片索引必须为整数或无,或具有 index 方法” 在代码
的这一部分上img = img[y:y+h, x:x+w]
“
import cv2
import time
img = cv2.imread('C:/Users/ML/Desktop/DataMatrix/Unbenannt.png')
img2 = img
height, width, channels = img.shape
print (height, width, channels)
CROP_W_SIZE = 2
CROP_H_SIZE = 2
for ih in range(CROP_H_SIZE ):
for iw in range(CROP_W_SIZE ):
x = width / CROP_W_SIZE * iw
y = height / CROP_H_SIZE * ih
h = (height / CROP_H_SIZE)
w = (width / CROP_W_SIZE )
print(x,y,h,w)
img = img[y:y+h, x:x+w]
NAME = str(time.time())
cv2.imwrite("C:/Users/ML/Desktop/DataMatrix/CROP/" + str(time.time()) + ".png",img)
img = img2
答案 0 :(得分:2)
您只需要对x,y,w,h的计算使用一个int()
函数即可。当您分割时,它们会转换为浮点数。
答案 1 :(得分:1)
x和y的值似乎为0,因为在循环的第一次迭代中,ih和iw的值为0。
索引错误是由于在Python 3中引起的,该除法不是整数除法,但它返回一个浮点数。您可能想使用////。