Python-opencv进行图片切割与保存

最近在用Python做文字识别类的项目,看到其他大牛用C++写的关于SVM分类器的博客,颇有启发。参考他的代码用Python写了一个图片切割的代码,来制作数据集。
首先在opencv安装目录下搜索digits得到一张图片“digits.png”,该图片大小为1000×2000。其中包含0~9十个数字,每个数字有500个,各个数字块的大小为20×20。该图片如下:


制作数据集的代码如下:

import cv2
import os
img=cv2.imread(r'D:\python_code\svmtest\digits.png')
filename=0
filenum=0
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
b=20#数字块大小为20×20
m=img.shape[0]//b
n=img.shape[1]//b
print(m,n)
for i in range(m):
    offsetRow=i*b
    if i%5==0 and i !=0:
        filename+=1
        filenum=0
    path="D:\\python_code\\svmtest\\data\\"+str(filename)
    if not os.path.exists(path):
        os.makedirs(path)    
    for j in range(n):
        offsetCol=j*b
        filepath=path+"\\"+str(filenum)+".jpg"
        filenum+=1
        im=img[offsetRow:offsetRow+b-1,offsetCol:offsetCol+b-1]
        cv2.imwrite(filepath,im, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
#print(filename,filenum)
#print(path)

得到数据集如下所示:
Python-opencv进行图片切割与保存_第1张图片

你可能感兴趣的:(图像处理)