python怎么实现图片特效处理
这篇文章主要介绍了python怎么实现图片特效处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么实现图片特效处理文章都会有所收获,下面我们一起来看看吧。
前言:
对于 图片处理,在日常生活中我们常常能够看到。
比如发个朋友圈之前,我们需要给自己的照片加个滤镜;在上传头像时候,需要对照片进行裁剪,这些都是图片的处理。
待处理的原图:
一、黑白特效
将图片处理后,变为黑白颜色
把像素的R,G,B三个通道数值都置为:
r*0.299+g*0.587+b*0.114
效果
黑白特效:
代码:
#!/usr/bin/env python# encoding: utf-8import numpy as npfrom PIL import Imageclass picture:'''This is a main Class, the file contains all documents.One document contains paragraphs that have several sentencesIt loads the original file and converts the original file to new contentThen the new content will be saved by this class'''def __init__(self):self.path = 'assets/picture.jpeg'def hello(self):'''This is a welcome speech:return: self'''print('*' * 50)print(' ' * 20 + '图片转换特效之黑白')print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')print('*' * 50)return selfdef run(self):'''The program entry'''im = self.to_black_white()im.show()im.save('assets/black_white.jpeg')def to_black_white(self):'''Picture to black white'''im = np.asarray(Image.open(self.path).convert('RGB'))trans = np.array([[0.299, 0.587, 0.114], [0.299, 0.587, 0.114], [0.299, 0.587, 0.114]]).transpose()im = np.dot(im, trans)return Image.fromarray(np.array(im).astype('uint8'))if __name__ == '__main__':picture().hello().run()
二、流年特效
将图片处理后,变为流年特效
把R通道的数值开平方,然后乘以一个参数
效果
流年特效:
代码:
#!/usr/bin/env python# encoding: utf-8import numpy as npfrom PIL import Imageclass picture:'''This is a main Class, the file contains all documents.One document contains paragraphs that have several sentencesIt loads the original file and converts the original file to new contentThen the new content will be saved by this class'''def __init__(self):self.path = 'assets/picture.jpeg'def hello(self):'''This is a welcome speech:return: self'''print('*' * 50)print(' ' * 20 + '图片转换特效之流年')print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')print('*' * 50)return selfdef run(self):'''The program entry'''im = self.fleeting()im.show()im.save('assets/fleeting.jpeg')def fleeting(self, params=12):'''Picture to fleeting'''im = np.asarray(Image.open(self.path).convert('RGB'))im1 = np.sqrt(im * [1.0, 0.0, 0.0]) * paramsim2 = im * [0.0, 1.0, 1.0]im = im1 + im2return Image.fromarray(np.array(im).astype('uint8'))if __name__ == '__main__':picture().hello().run()
三、旧电影特效
将图片处理后,变为旧电影特效
把像素的R,G,B三个通道数值,3个通道的分别乘以3个参数后求和,最后把超过255的值置为255
效果
旧电影特效:
代码:
#!/usr/bin/env python# encoding: utf-8import numpy as npfrom PIL import Imageclass picture:'''This is a main Class, the file contains all documents.One document contains paragraphs that have several sentencesIt loads the original file and converts the original file to new contentThen the new content will be saved by this class'''def __init__(self):self.path = 'assets/picture.jpeg'def hello(self):'''This is a welcome speech:return: self'''print('*' * 50)print(' ' * 20 + '图片转换特效之旧电影')print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')print('*' * 50)return selfdef run(self):'''The program entry'''im = self.old_film()im.show()im.save('assets/old_film.jpeg')def old_film(self):'''Picture to old film'''im = np.asarray(Image.open(self.path).convert('RGB'))trans = np.array([[0.393, 0.769, 0.189], [0.349, 0.686, 0.168], [0.272, 0.534, 0.131]]).transpose()im = np.dot(im, trans).clip(max=255)return Image.fromarray(np.array(im).astype('uint8'))if __name__ == '__main__':picture().hello().run()
四、反色特效
将图片处理后,变为反色特效
这个最简单了,用255减去每个通道的原来的数值
效果
反色特效:
代码:
#!/usr/bin/env python# encoding: utf-8import numpy as npfrom PIL import Imageclass picture:'''This is a main Class, the file contains all documents.One document contains paragraphs that have several sentencesIt loads the original file and converts the original file to new contentThen the new content will be saved by this class'''def __init__(self):self.path = 'assets/picture.jpeg'def hello(self):'''This is a welcome speech:return: self'''print('*' * 50)print(' ' * 20 + '图片转换特效之反色')print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')print('*' * 50)return selfdef run(self):'''The program entry'''im = self.reverse()im.show()im.save('assets/reverse.jpeg')def reverse(self):'''Picture to reverse'''im = 255 - np.asarray(Image.open(self.path).convert('RGB'))return Image.fromarray(np.array(im).astype('uint8'))if __name__ == '__main__':picture().hello().run()
关于“python怎么实现图片特效处理”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“python怎么实现图片特效处理”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341