gpt4 book ai didi

python - Numpy-如何在 OpenCV python 中迭代创建 ROI?

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:39 25 4
gpt4 key购买 nike

我正在尝试将图像拆分为较小图像的网格,以便我可以分别处理每个小图像。为此,我意识到我必须将每个小图像定义为 ROI,并且我可以从那里轻松使用它。

现在,我的网格大小不固定。即,如果用户输入 5,我必须制作 5x5 的网格。

逐个像素地遍历图像会很慢,所以我决定使用 Numpy 通过使用此构造来创建 ROI:

#Assuming user entered grid size =5
roiwidth=w/5
roiheight=h/5
roi0=img[0:roiheight,0:roiwidth]

这将是我的第一片。 h和w分别是图像的高度和宽度。对于下一片我必须做的:

roi1=img[0:roiheight,roiwidth+1:2*roiwidth]   

虽然我最后的投资返回率是:

roi25=img[4*roiheight+1:5*roiheight, 4*roiwidth+1:5*roiwidth]

但我需要反复进行,无法找到正确的方法。我不想逐个像素地遍历图像并需要它是动态的

编辑:我现在这样迭代:

import cv2
import numpy

img=cv2.imread('01.jpg')
h,w,chan=img.shape
rh=h/5
rw=w/5
z={}
count=0
for i in range (0,5):
for j in range (0,5):
yl=i*rh
yh=(i+1)*rh
xl=j*rw
xh=(j+1)*rw
z[count]=img[yl:yh,xl:xh]
count=count+1

但我不知道这是否是最有效的方法。

最佳答案

如果您想使用 Numpy 函数分割图像,请查看 numpy.array_split .

在你的情况下你会写这样的东西:

z = {}
count = 0
split1 = np.array_split(img, rh)
for sub in split1:
split2 = np.array_split(sub, rw, 1)
for sub2 in split2:
z[count] = sub2
count++

关于python - Numpy-如何在 OpenCV python 中迭代创建 ROI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38433774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com