本文想實現一個分類器模型,該模型能夠識別出九宮格圖片並將圖片進行切割,首先我要構造訓練集,也就是自己生成一些九宮格圖片。
其中r=3表示將其切割爲3行,c=3表示將其切割爲3列。你也可以生成4宮格圖片。
import cv2
import os
#image_path=r'C:\Users\hou\Desktop\timg.jpg'
def cut(image_path,r=3,c=3):
'''
image_path:path of image
r: num of split rows
c: num of split cols
'''
img=cv2.imread(image_path)
width,height,_=img.shape
cut_img_r=np.array_split(img,r)
res=[]
for col in range(c):
cut_img_c=np.array_split(cut_img_r[col].swapaxes(1,0),c)
cut_img_c=[cv2.copyMakeBorder(i.swapaxes(1,0),10,10,10,10,cv2.BORDER_CONSTANT,value=[255,255,255]) for i in cut_img_c]
res.append(np.concatenate(cut_img_c,1))
cut_img=np.concatenate(res)[10:-10,10:-10]
return cut_img
圖爲生成的九宮格圖片效果。
下面是分類模型的構建。