本文想实现一个分类器模型,该模型能够识别出九宫格图片并将图片进行切割,首先我要构造训练集,也就是自己生成一些九宫格图片。
其中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
图为生成的九宫格图片效果。
下面是分类模型的构建。