imagens de mosaico python
classificação
Processamento de imagem-PIL-python para imagens em mosaico
Começar
contar com
Pillow 5.2.0
python 3.7.7
Código de oferta
# magic remark
# -*- encoding:utf-8 -*-
from PIL import Image
def _mosaic(img):
s = img.size
img = img.resize((10,10))
img = img.resize(s)
return img
def mosaic(img,fx,fy,tx,ty):
c = img.crop((fx,fy,tx,ty))
c = _mosaic(c)
img.paste(c,(fx,fy,tx,ty))
return img
if(__name__ == '__main__'):
while(1):
flag = False
name = input('请输入文件名:')
try:
img = Image.open(name)
flag = True
except:
print('无法读取文件')
if(flag):
break
fx,fy,tx,ty = None,None,None,None
while(1):
flag = False
name = input('请输入需要打马赛克的区域(x1,y1,x2,y2):')
try:
name = [int(i) for i in name.split(',')]
if(len(name) != 4):
raise ValueError
fx,fy,tx,ty = name
flag = True
except:
print('错误的格式')
if(flag):
break
img = mosaic(img,fx,fy,tx,ty)
while(1):
cmd = input('处理完成,按1存储文件,按2显示文件,按3退出:')
if(cmd == '1'):
path = input('请输入存储路径:')
try:
img.save(path)
exit()
except:
print('无法存储文件')
elif(cmd == '2'):
img.show()
elif(cmd == '3'):
exit()
else:
print('未知的命令:%s'%cmd)
efeito
Análise de código
Biblioteca de importação
# magic remark
# -*- encoding:utf-8 -*-
from PIL import Image
Código e ideias gerais
Ideias:
A essência principal está nestas poucas linhas de código:
img = img.resize((10,10))
img = img.resize(s)
Quando a imagem é reduzida, os pixels serão mesclados. Quando a
imagem é ampliada, os pixels
serão copiados. Portanto, se a imagem for reduzida e depois ampliada, os pixels mesclados serão copiados em alguns minutos e terá um efeito de mosaico.
Código:
def _mosaic(img):
s = img.size
img = img.resize((10,10))
img = img.resize(s)
return img
Código de mosaico parcial e ideias
Ideias:
Corte algumas partes, bata a imagem cortada como um todo e cole-a de volta
Código:
def mosaic(img,fx,fy,tx,ty):
c = img.crop((fx,fy,tx,ty))
c = _mosaic(c)
img.paste(c,(fx,fy,tx,ty))
return img
Nome do arquivo de entrada
if(__name__ == '__main__'):
while(1):
flag = False
name = input('请输入文件名:')
try:
img = Image.open(name)
flag = True
except:
print('无法读取文件')
if(flag):
break
Insira a posição de corte
fx,fy,tx,ty = None,None,None,None
while(1):
flag = False
name = input('请输入需要打马赛克的区域(x1,y1,x2,y2):')
try:
name = [int(i) for i in name.split(',')]
if(len(name) != 4):
raise ValueError
fx,fy,tx,ty = name
flag = True
except:
print('错误的格式')
if(flag):
break
Luta local
img = mosaic(img,fx,fy,tx,ty)
Seção de saída
while(1):
cmd = input('处理完成,按1存储文件,按2显示文件,按3退出:')
if(cmd == '1'):
path = input('请输入存储路径:')
try:
img.save(path)
exit()
except:
print('无法存储文件')
elif(cmd == '2'):
img.show()
elif(cmd == '3'):
exit()
else:
print('未知的命令:%s'%cmd)
Code github
Autor
estrada de sucesso
Tchau, acabou a aula!
O hit-road é atualizado de tempos em tempos, veja ou saia!