Python 图片色彩转为回忆中的色彩(附代码) | Python工具
目录
前言
环境依赖
代码
总结
前言
本文提供将图片色彩转为黑白或者褐色风格。比较类似于我们在看动漫、影视作品中,当人物在回忆过程中,体现出来的画面一般都是黑白或者褐色的。
环境依赖
ffmpeg环境依赖可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客
ffmpy依赖安装
pip install ffmpy -i https://pypi.douban.com/simple
代码
不废话,上代码
#!/user/bin/env python
# coding=utf-8
"""
@project : csdn
@author : 剑客阿良_ALiang
@file : image_change_color_tool.py
@ide : PyCharm
@time : 2021-11-19 15:10:22
"""
import os
import uuid
from ffmpy import FFmpeg# 黑白图
def black_and_white(image_path: str, output_dir: str):ext = _check_format(image_path)result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))ff = FFmpeg(inputs={image_path: None},outputs={result: '-vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 -y'})print(ff.cmd)ff.run()return result# 褐色
def brown(image_path: str, output_dir: str):ext = _check_format(image_path)result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))ff = FFmpeg(inputs={image_path: None},outputs={result: '-vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131 -y'})print(ff.cmd)ff.run()return resultdef _check_format(image_path: str):ext = os.path.basename(image_path).strip().split('.')[-1]if ext not in ['png', 'jpg']:raise Exception('format error')return ext
代码说明
1、两个方法入参均为:图片路径、输出目录路径。
2、为了避免文件名重复,使用uuid作为文件名。
3、图片的后缀格式判断只有两种,如需增加,自行添加即可。
验证一下
图片准备,原图如下:
验证代码
if __name__ == '__main__':print(black_and_white('C:/Users/huyi/Desktop/4.jpg', 'C:/Users/huyi/Desktop/'))print(brown('C:/Users/huyi/Desktop/4.jpg', 'C:/Users/huyi/Desktop/'))
执行结果
PyDev console: starting.
Python 3.6.13 |Anaconda, Inc.| (default, Mar 16 2021, 11:37:27) [MSC v.1916 64 bit (AMD64)] on win32
runfile('D:/spyder/csdn/image_change_color_tool.py', wdir='D:/spyder/csdn')
ffmpeg -i C:/Users/huyi/Desktop/4.jpg -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 -y C:/Users/huyi/Desktop/c7052ed8-d5db-4e84-9c01-88d661c967a5.jpg
ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developersbuilt with gcc 9.3-win32 (GCC) 20200320configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libtwolame --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomplibavutil 56. 51.100 / 56. 51.100libavcodec 58. 91.100 / 58. 91.100libavformat 58. 45.100 / 58. 45.100libavdevice 58. 10.100 / 58. 10.100libavfilter 7. 85.100 / 7. 85.100libswscale 5. 7.100 / 5. 7.100libswresample 3. 7.100 / 3. 7.100libpostproc 55. 7.100 / 55. 7.100
Input #0, image2, from 'C:/Users/huyi/Desktop/4.jpg':Duration: 00:00:00.04, start: 0.000000, bitrate: 101138 kb/sStream #0:0: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 1920x1080, 25 tbr, 25 tbn, 25 tbc
Stream mapping:Stream #0:0 -> #0:0 (mjpeg (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 000001625402e2c0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0000016253b14f80] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'C:/Users/huyi/Desktop/c7052ed8-d5db-4e84-9c01-88d661c967a5.jpg':Metadata:encoder : Lavf58.45.100Stream #0:0: Video: mjpeg, yuvj444p(pc), 1920x1080, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbcMetadata:encoder : Lavc58.91.100 mjpegSide data:cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 1 fps=0.0 q=9.2 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.232x
video:133kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
C:/Users/huyi/Desktop/c7052ed8-d5db-4e84-9c01-88d661c967a5.jpg
ffmpeg -i C:/Users/huyi/Desktop/4.jpg -vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131 -y C:/Users/huyi/Desktop/9282f36a-2361-4b0d-a115-56864c9d2337.jpg
ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developersbuilt with gcc 9.3-win32 (GCC) 20200320configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libtwolame --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomplibavutil 56. 51.100 / 56. 51.100libavcodec 58. 91.100 / 58. 91.100libavformat 58. 45.100 / 58. 45.100libavdevice 58. 10.100 / 58. 10.100libavfilter 7. 85.100 / 7. 85.100libswscale 5. 7.100 / 5. 7.100libswresample 3. 7.100 / 3. 7.100libpostproc 55. 7.100 / 55. 7.100
Input #0, image2, from 'C:/Users/huyi/Desktop/4.jpg':Duration: 00:00:00.04, start: 0.000000, bitrate: 101138 kb/sStream #0:0: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 1920x1080, 25 tbr, 25 tbn, 25 tbc
Stream mapping:Stream #0:0 -> #0:0 (mjpeg (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0000013b05762f80] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0000013b052c4fc0] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'C:/Users/huyi/Desktop/9282f36a-2361-4b0d-a115-56864c9d2337.jpg':Metadata:encoder : Lavf58.45.100Stream #0:0: Video: mjpeg, yuvj444p(pc), 1920x1080, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbcMetadata:encoder : Lavc58.91.100 mjpegSide data:cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 1 fps=0.0 q=9.5 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.129x
video:177kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
C:/Users/huyi/Desktop/9282f36a-2361-4b0d-a115-56864c9d2337.jpg
黑白图效果
褐色图效果
OK,炫。
总结
没啥好总结的。
分享:
理想都是骗人的,都是鬼话。还不如及时行乐,还不如放纵一生,还不如今朝有酒今朝醉。但我还是要告诉你,理想是存在的,只不过追逐理想,可能会很痛苦。可我们依然要为理想主义,保留一席之地。——罗翔
如果本文对你有用的话,请不要吝啬你的赞,谢谢!
Python 图片色彩转为回忆中的色彩(附代码) | Python工具相关推荐
- Python深度学习一书中: 8.4代码VAE在tensorflow2.0错误‘lambda_1/random_normal/shape‘的解决方案
Python深度学习一书中: 8.4代码VAE在tensorflow2.0下会有Duplicate node name in graph: 'lambda_1/random_normal/shape' ...
- 聚类的外部指标(Purity, ARI, NMI, ACC) 和内部指标(NCC,Entropy,Compactness,Silhouette Index),附代码 (Python 和 Matlab)
聚类性能评估的外部指标和内部指标,附代码 (Python 和 Matlab) 文章目录 聚类性能评估的外部指标和内部指标,附代码 (Python 和 Matlab) 1 外部指标 1.1 Purity ...
- Ionic+Angular实现中英国际化(附代码下载)
场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...
- python图片分类技术介绍_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)!...
介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...
- 最简单的python语言程序设计_编程中最简单的语言Python,这样学或许更容易
最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...
- python批量json文件转xml文件脚本(附代码)
场景:在使用了mask rcnn跑实验后标注了大量地json格式文件,现在打算使用yolo和faster rcnn 跑实验 所以需要将之前地json文件转为xml 但是找了很久,没发现有批量处 ...
- python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...
(附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...
- Python 初学者进阶的九大技能(附代码)
授权自AI科技大本营(ID:rgznai100) 本文约4300字,建议阅读9分钟 本文为你介绍Python必须掌握的九大技能. 以下为译文: Python是一种很棒的语言,语法简单,无需在代码中搜索 ...
- 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...
作者:Gigi Sayfan 翻译:吴振东 校对:吴金笛 本文约3300字,建议阅读10分钟. 本文将介绍多种Python对象分别所占用的内存,并解释所选择的测量方法和函数,为节省内存提供建议. Py ...
最新文章
- python源文件保存在哪里_python数据爬下来保存在哪里
- 手机中的图片怎么压缩大小?
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- 手机网页css字体,CSS深入浅出-动态REM(手机专用)
- nginx运行php如何,ThinkPHP项目在Nginx上运行的配置问题
- 从涂鸦到发布 —— 理解API的设计过程
- 一句话进行浏览器版本识别
- 集合框架之Map LinkedHashMap
- 命令行下一种新的加帐号的方法
- LightOj 1078 Basic Math
- linux ubuntu 安装jdk
- 关于cmd输入python查看版本号与安装版本不一致的奇怪现象
- Qt总结之五:读写文件操作
- spring-第五篇之spring容器中的bean
- javaSE基础之字符串
- pitch、yaw、roll三个角
- 图解 OSPF :什么是 LSA ?
- matlab自动运行,自动运行matlab的方法步骤
- 中间继电器DZY-204/DC110V
- 看到校友录一位同学的留言,想起来一首诗
热门文章
- 套息交易是如何获利的
- no available service found in cluster ‘default‘, please make sure registry config correct and keep y
- ActionBar的简单使用
- android开源项目二、
- 在万米高空享受高速网络,霍尼韦尔与天地互联提供机上高速互联解决方案
- 数字图书是计算机技术,计算机技术在数字图书馆的运用
- 【面经攒人品】应急中心单位面经考前复习
- CVE-2017-12615 tomcat任意文件写入漏洞复现
- H.323之童话故事篇(简装版)
- linux清空buff,Linux中buff