在python中怎么裁剪图片大小?如何利用Python裁剪图片?

Python014

在python中怎么裁剪图片大小?如何利用Python裁剪图片?,第1张

先对图片进行二值化处理。

由于这些格子大小均匀,所以可以使用常规的除法,先裁剪出第一个格子:

e=a[:,:,0].shape

f=a[0:int(e[0]/9),0:int(e[1]/9)]

io.imsave('00.png',f)

下图是等比例放大的效果图。

第一列第二个格子:

m=1

n=0

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

第一行第二个格子:

m=0

n=1

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

这样,用for循环,可以实现全部裁剪:

for m in range(9):

for n in range(9):

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

io.imsave('0/'+str(m)+'-'+str(n)+'.png',f)

去除边界的黑框,只保留数字或空白:

for m in range(9):

for n in range(9):

f=a[int(m*e[0]/9)+10:int((m+1)*e[0]/9)-10,int(n*e[1]/9)+10:int((n+1)*e[1]/9)-10]

io.imsave('0/'+str(m)+'-'+str(n)+'.png',f)

批量获取图片:

keras 多张图片:

很多情况下,你并不能使用以上这些方法来直接输入数据去训练或者预测,原因是你的数据集太大了,没办法把所有的图片都载入到内存当中。那keras的data generator就派上用场了,当你的模型需要训练数据的时候,generator会自动从cpu生成一批图片,喂到GPU里面让模型进行训练,依次循环,直到训练结束。

压缩数据中维度为1的维度, numpy.squeeze()

模型是不能直接对图片进行卷积操作的,必须先转化为numpy数组才能输入模型里面去,而且如果数据集的图片尺寸不统一,也有不同的操作细节。

keras 模型保存路径: C:\Users\你的用户名.keras\models

notop代表是否包括顶层的全连接层,默认include_top=True,包括全连接层。

tf -- tensorflow 或者 CNTK

th -- theano

需要使用Python Imaging Library,下代是python2.x的代码:

from itertools import izip

import Image

 

i1 = Image.open("image1.jpg")

i2 = Image.open("image2.jpg")

assert i1.mode == i2.mode, "Different kinds of images."

assert i1.size == i2.size, "Different sizes."

 

pairs = izip(i1.getdata(), i2.getdata())

if len(i1.getbands()) == 1:

    # for gray-scale jpegs

    dif = sum(abs(p1-p2) for p1,p2 in pairs)

else:

    dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))

 

ncomponents = i1.size[0] * i1.size[1] * 3

print "Difference (percentage):", (dif / 255.0 * 100) / ncomponents