太有趣了!五个处理图像的场景都是Python完成的
很多对Python接触不深的同学可能只知道Python语法简洁,能赚钱等等,但是你们不知道的是,Python像是叮当猫的口袋,几乎什么都能做,适合外行小白们去摸索学习,能极大的增加对编程的兴趣。
有些工具用python来实现不一定是技术上的最优选择,但可能是最简洁、最面向大众的。
介绍几个不错的处理图像的案例,并附上代码,尽可能让大家能拿来就用。
目录
1、生成词云图
2、生成艺术二维码
3、生成微信九宫格图片
4、生成手绘图片
5、生成证件照
1、生成词云图
词云图一般用来凸显文本关键词,产生视觉上的焦点,利用好词云会让数据更加有说服力。
python也有专门制作词云的库-wordcloud,能自定义颜色和形状。
比如我用小丑的豆瓣评论做成一张词云图。
作词云图,首先要对收集文本,然后对文本做分词处理,最后生成词云。
这里不对前两步做详细解析,只给出词云代码:
def wordCloudImage(wordlist,width,height,bgcolor,savepath):# 可以打开你喜欢的词云展现背景图# cloud_mask = np.array(Image.open('nezha.png'))# 定义词云的一些属性wc = WordCloud(width=width, # 图幅宽度 900height=height, # 图幅高度 3000background_color=bgcolor, # 背景图分割颜色为白色 "black"# mask=cloud_mask, # 背景图样max_words=300, # 显示最大词数font_path='./fonts/simhei.ttf', # 显示中文collocations=False,# min_font_size=5, # 最小尺寸# max_font_size=100, # 最大尺寸)# wordfile是分词后的词汇列表x = wc.generate(wordlist)# 生成词云图片image = x.to_image()# 展示词云图片image.show()# savepath是图片保存地址,保存词云图片wc.to_file(savepath)
2、生成艺术二维码
现在有不少二维码生成工具,python也有一款二维码生成库-myqr,可以给二维码加上图片背景,看起来很炫,效果如下
使用pip安装myqr,非常简单。
该库可以在命令行中运行,你只需要传递网址链接、图片地址等参数,就可以生成相应的二维码,二维码图片默认保存在当前目录下面。
命令行输入格式:
myqr 网址链接
比如:
myqr https://zhuanlan.zhihu.com/pydatalysis
再按enter键执行,就能生成对应链接的二维码了。
怎么融合图片呢?很简单,传入图片地址参数'-p'
比如说我d盘有一张海绵宝宝的图片,地址是:d:\hmbb.jpg即传入参数'-pd:\hmbb.jpg'在命令行键入:
myqr https://zhuanlan.zhihu.com/pydatalysis -p d:\hmbb.jpg -c
执行就能生成上图的海绵宝宝主题二维码了。
3、生成微信九宫格图片
有段时间朋友圈比较流行九宫格图片,就是一张图分割成九张图,看着似乎很文艺。
这个可以用很多软件来做,python当然也能实现,只需不到50行代码。
代码:
# 朋友圈九宫格图片制作
# encoding=utf-8
from PIL import Image
import sys# 先将input image 填充为正方形
def fill_image(image):width, height = image.size# 选取原图片长、宽中较大值作为新图片的九宫格半径new_image_length = width if width > height else height# 生产新图片【白底】new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')# 将原图粘贴在新图上,位置为居中if width > height:new_image.paste(image, (0, int((new_image_length - height) / 2)))else:new_image.paste(image, (int((new_image_length - width) / 2), 0))return new_image# 将图片切割成九宫格
def cut_image(image):width, height = image.size# 一行放3张图item_width = int(width / 3)box_list = []for i in range(0, 3):for j in range(0, 3):box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)box_list.append(box)image_list = [image.crop(box) for box in box_list]return image_list# 保存图片
def save_images(image_list):index = 1for image in image_list:image.save('e:\\图片\\'+str(index) + '.png', 'PNG')index += 1if __name__ == '__main__':file_path = "e:\\图片\\龙猫.jpg"image = Image.open(file_path)# image.show()image = fill_image(image)image_list = cut_image(image)print(len(image_list))save_images(image_list)
4、生成手绘图片
现在很多软件可以将照片转换成手绘形式,python也可以实现,而且定制化更强,可批量转换。
这里用到pillow库,这是非常牛逼且专业的Python图像处理库
原图:
生成手绘后:
代码:
# -*- coding: UTF-8 -*-
from PIL import Image
import numpy as np# 原始图片路径
original_image_path = "E:\\图片\\陆家嘴.jpg"
# 要生成的手绘图片路径,可自定义
handdrawn_image_path = "E:\\图片\\陆家嘴-手绘.jpg"# 加载原图,将图像转化为数组数据
a=np.asarray(Image.open(original_image_path).convert('L')).astype('float')
depth=10.#取图像灰度的梯度值
grad=np.gradient(a)#取横纵图像梯度值
grad_x,grad_y=grad
grad_x=grad_x*depth/100.
grad_y=grad_y*depth/100.
A=np.sqrt(grad_x**2+grad_y**2+1.)
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1./A#光源的俯视角度转化为弧度值
vec_el=np.pi/2.2#光源的方位角度转化为弧度值
vec_az=np.pi/4.#光源对x轴的影响
dx=np.cos(vec_el)*np.cos(vec_az)
dy=np.cos(vec_el)*np.sin(vec_az)
dz=np.sin(vec_el)#光源归一化,把梯度转化为灰度
b=255*(dx*uni_x+dy*uni_y+dz*uni_z)#避免数据越界,将生成的灰度值裁剪至0-255内
b=b.clip(0,255)#图像重构
im=Image.fromarray(b.astype('uint8'))print('完成')
im.save(handdrawn_image_path)
这里可以做成批量处理的转手绘脚本,大家试试。
5、生成证件照
这里用到pillow和removebg,分别用于修改照片尺寸和抠图。
这里removebg用到了AI技术,抠图边缘很柔和,效果挺不错的。
代码:
# encoding=utf-8
from PIL import Image
from removebg import RemoveBg# removebg涉及到api_key,需要到其官网申请
api_key = 'PysKLJueeoyK9NbJXXXXXXXXX'def change_bgcolor(file_in, file_out, api_key, color):'''#必须为png格式'''p, s = file_in.split(".")rmbg = RemoveBg(api_key, 'error.log')rmbg.remove_background_from_img_file(file_in)file_no_bg = "{}.{}_no_bg.{}".format(p, s, s)no_bg_image = Image.open(file_no_bg)x, y = no_bg_image.sizenew_image = Image.new('RGBA', no_bg_image.size, color=color)new_image.paste(no_bg_image, (0, 0, x, y), no_bg_image)new_image.save(file_out)# 修改照片尺寸
def change_size(file_in, file_out, width, height):image = Image.open(file_in)resized_image = image.resize((width, height), Image.ANTIALIAS)resized_image.save(file_out)if __name__ == "__main__":file_in = 'E:\\girl.png'file_out = 'E:\\girl_cutout.png'# 尺寸可按需求自修改# change_size(file_in, file_out, width, height)# 换背景色color = (0, 125, 255)change_bgcolor(file_in, file_out, api_key, color)
Python其实还有很多有趣的图像处理,对这个感兴趣的可以深入研究一下,对Python感兴趣的也可以关注一下恰恰,多点赞支持,恰恰会持续更新Python相关知识的哦!
太有趣了!五个处理图像的场景都是Python完成的相关推荐
- OpenCV学习笔记(十五):图像仿射变换:warpAffine(),getRotationMatrix2D()
OpenCV学习笔记(十五):图像仿射变换:warpAffine(),getRotationMatrix2D() 一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式. ...
- 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
matlab设计: 与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高 小波变换: 示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度与频 ...
- WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果
这里要实现的效果指的是对图片像素点区域进行颜色叠加,首先要做的是得到图片非透明部分的区域,效果如图: 实现步骤:1.在主窗体添加控制控件: <Label Grid.Row="4&quo ...
- matlab fx函数图像,五种常用小波基含MATLAB实现 五种基本函数图像
五种基本函数图像 1.给出五种常用小波基的时域和频域波形图. 与标准的傅里叶变换相比,小波分析中使用到的小波函数具有不唯一性,即小波函数(t) 具有多样性.小波分析在工程应用中,一个十分重要的问题就 ...
- 计算机课真是太有趣了的英文翻译,英语翻译_“真是太好笑了”英文说法大全_沪江英语...
玩笑常常逗得人们哈哈大笑,确实有益身心健康.如果一个玩笑把你逗得前仰后合,该怎么用英文来描述这个"真是太好笑了"呢?看看下面的说法吧! 1. It's hilarious. 真是太 ...
- NeurIPS 2021 | 图像损坏场景下行人重识别新基准
关注公众号,发现CV技术之美 0. 导读 行人重识别(Person ReID)在安全部署领域有着广泛应用,当前的研究仅考虑ReID模型在干净数据集上的性能,而忽略了ReID模型在各种图像损坏场景(雨天 ...
- 【论文解读】利用高光谱图像对场景反射率进行有效估计(Efficient Estimation of Reflectance Parameters from Imaging Spectropy)
文章目录 前言 摘要 Ⅰ. 介绍 Ⅱ. 估计反射参数的方法 A. 重建阴影因子 B. 表面反射率和镜面系数的计算 C. 光源功率谱计算 D. 光源方向 E. 将方法扩展到三色图像 Ⅲ. 实现方式 Ⅳ. ...
- 这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦
你所有不曾料想过的问题,都会随着时间的推移而与你不期而遇:你所有曾经潇洒的随遇而安,同样也会随时间流逝而让你承担那些似乎命中已经注定的代价.在这个世界上,"唯一不可阻挡的是时间,它像一把利刃 ...
- 都说Python是万能的,但要是不知道它的五个主要用途,等于白学
大约是从16年开始Python就已经在国内被炒热了,你会在微信文章的广告里看到无数0元学Python.XXX如何通过学会Python实现月薪从5k到3w的广告. 当然,作为祖国未来的希望,Python ...
最新文章
- J2EE JVM加载class文件的原理机制
- 网格弹簧质点系统模拟(Spring-Mass System by Verlet Integration)附源码
- ARC内存管理机制详解
- [转载]C#时间函数
- OC之OBJC2_UNAVAILABLE
- 关于大学老师,我们常有的6种误解!
- 词法分析程序 LEX和VC6整合使用的一个简单例子
- 【车道线检测与寻迹】【1月8日】车辆、道路模型与道路跟踪
- 图书管理系统c语言ns图,图书管理系统流程图.doc
- 机械工程师计算机证书考试科目,机械工程师考试科目 内容有哪些
- 计算机视觉知识体系图,计算机视觉系统框架的新构思
- [学习报告]《LeetCode零基础指南》(第五讲) 指针-gyro
- 做大数据的公司_技术
- python爬取哔哩哔哩视频_python爬取哔哩哔哩小视频
- java font好看的字体_解决Java字体难看的问题
- 千锋python培训多久
- 别只盯着LoRa、SigFox, LPWAN 连接技术还有这些!
- 微软、IBM对垒大数据
- 电子邮箱哪个好用又安全?
- CSDN“2019 优秀AI、IoT应用案例TOP 30+”正式发布
热门文章
- 查询阿里云存储文件并导出excle 保存到本地
- 扫码登录原理+代码解析+完整dome
- 重磅!电子身份证真的来了!竟可支付宝领取!这些城市已经确认试点!
- [附源码]计算机毕业设计JAVA社区空巢老人关爱服务平台
- 在ubuntu16.04上找不到lsmod insmod等内核模块加载命令
- 2017 蓝桥杯 迷宫(dfs)
- CSS之左右固定,中间自适应
- 少年啊,来一发昆特吗(二)——昆特牌的触摸
- 记第一次Python数据分析练习——2018年“泰迪杯”数据分析职业技能大赛B题(2021/5/20)
- word:如何一键修改同一级别标题