【发布时间】:2014-06-11 22:07:12
【问题描述】:
我想将图像分割成 N*N 个正方形,以便我可以分别处理这些正方形。如何在 python 中使用 opencv 完成上述操作??
【问题讨论】:
标签: python python-2.7 opencv image-processing
我想将图像分割成 N*N 个正方形,以便我可以分别处理这些正方形。如何在 python 中使用 opencv 完成上述操作??
【问题讨论】:
标签: python python-2.7 opencv image-processing
通过将 OpenCV 图像作为 Numpy 二维数组操作来裁剪矩形是一种常见的做法:
img = cv2.imread('sachin.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
roi_gray = gray[y:y+h, x:x+w]
其余的都是微不足道的,在 OpenCV 范围之外。
【讨论】:
import matplotlib.pyplot as plt
import cv2
import numpy as np
%matplotlib inline
img = cv2.imread("painting.jpg")
def img_to_grid(img, row,col):
ww = [[i.min(), i.max()] for i in np.array_split(range(img.shape[0]),row)]
hh = [[i.min(), i.max()] for i in np.array_split(range(img.shape[1]),col)]
grid = [img[j:jj,i:ii,:] for j,jj in ww for i,ii in hh]
return grid, len(ww), len(hh)
def plot_grid(grid,row,col,h=5,w=5):
fig, ax = plt.subplots(nrows=row, ncols=col)
[axi.set_axis_off() for axi in ax.ravel()]
fig.set_figheight(h)
fig.set_figwidth(w)
c = 0
for row in ax:
for col in row:
col.imshow(np.flip(grid[c],axis=-1))
c+=1
plt.show()
if __name__=='__main__':
row, col =5,15
grid , r,c = img_to_grid(img,row,col)
plot_grid(grid,r,c)
输出:
【讨论】: