最近遇到了一个新的情景,需要将彩色图片转化为黑白图片,如果手动地去转化一张一张图片,那就真的太原始人了。
用Python,咱只需要几行代码就可以在几秒内转化上千张图片。而且,这个功能的用途相当广泛,不仅能使图片变得深邃,而且还可以简化一些复杂模型的数学计算,具体可见第三部分的分析。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
输入以下命令安装本文所需要的依赖模块:
pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
看到 Successfully installed xxx 则说明安装成功。
2.编写代码
首先写一下我们的彩色图转单色图的转化函数,接收两个参数,一个是输入文件的路径,一个是输出文件路径:
from PIL import Image def colorful_to_single(input_img_path, output_img_path): """ 彩色图转单色图 :param input_img_path: 图片路径 :param output_img_path: 输出图片路径 """ img = Image.open(input_img_path) # 转化为黑白图片 img = img.convert("L") img.save(output_img_path)
(又是注释比代码长系列)
然后将你需要转化的图片放到一个文件夹中,我这里命名该文件夹为imgs,然后指定一个输出文件夹 output,如下:
dataset_dir = 'imgs' output_dir = 'output' # 获得需要转化的图片路径并生成目标路径 image_filenames = [( os.path.join(dataset_dir, file_dir), os.path.join(output_dir, file_dir) ) for file_dir in os.listdir(dataset_dir)] # 转化所有图片 for path in image_filenames: colorful_to_single(path[0], path[1])
这里比较难理解的可能是image_filenames,用到了列表推导式,即遍历所有dataset_dir里的文件:
for file_dir in os.listdir(dataset_dir)
并将其和我们指定的目录以路径的形式链接起来:
os.path.join(output_dir, file_dir)
最终生成一个数组,第一个元素是输入路径,第二个元素是输出路径:
image_filenames = [( os.path.join(dataset_dir, file_dir), os.path.join(output_dir, file_dir) ) for file_dir in os.listdir(dataset_dir)]
3.效果及用途
黑白效果就是这样的:
用途当然也有很多了,比如:
1.在深度学习分类图像的时候,如果并不需要考虑颜色的维度,可以先将图片转化为黑白图,简化运算复杂度。
2.黑白图片有的时候比彩色图片更具备冲击力,能够更加突出主题。
3.黑白图片有些时候也有美颜的作用,因为此时注意力的重点在于脸型,如果那个人的脸型特别好看,但是肤色比较差,这时候黑白照片就很有效果。
我们的文章到此就结束啦,如果你喜欢我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典