python 艺术照片滤镜_Python批量为照片应用灰度滤镜

本文介绍了如何使用Python的OpenCV和NumPy模块批量将彩色照片转换为具有艺术感的黑白照片。首先,介绍了安装这两个模块的方法,然后详细解释了实现灰度滤镜的代码逻辑,包括读取图片、转换颜色空间和调整亮度对比度,最后通过for循环处理指定目录下的所有图片。
摘要由CSDN通过智能技术生成

引言

黑白照片很有年代感,让人怀念,自己动手可以把自己喜爱的彩色照片设计成有情怀的黑白照片,使用 OpenCV-Python 模块实现批量为照片添加灰度滤镜.

85f953a0edcd

红包.png

85f953a0edcd

早安阳光.png

思路设计

主要应用 Python 的第三方模块 OpenCV-Python 和 NumPy 模块实现。在使用第三方模块时,需要先安装。

安装OpenCV和NumPy

pip install opencv-python

85f953a0edcd

安装OpenCv.png

pip install numpy

考虑到pip install opencv-python和pip install numpy安装下载慢,可以下载whl格式文件安装。

备注: 先安装numpy模块,再安装opencv-python模块

85f953a0edcd

whl格式安装.png

延申学习说明

pip3.9.exe install D:\Python38\Scripts\opencv_python-4.5.1.48-cp39-cp39-win_amd64.whl

pip3.9.exe 说明当前系统版本为Python3.9

-cp39-cp39 也是说明系统版本为Python3.9

win_amd64.whl 说明当前系统64位

成功安装OpenCV-Python 和 NumPy 模块

85f953a0edcd

pip list查看.png

代码参考分析

导入本实例所需的模块。这里为OpenCV-Python、NumPy 和OS 模块。其中,OS 模块是为了获取指定路径下的文件而导入的。

编写用于添加灰度滤镜的方法filter()。该方法需要传递两个参数,第一个参数用于指定图片路径,第二个参数用于指定图片名称。在该方法中,首先将源文件路径和文件名拼接为源文件的绝对路径,并且生成目标文件路径,然后应用OpenCV-Python 模块的imread() 方法读取源图片,再使用cvtColor() 方法将其转换为灰度,并且使用NumPy 模块的相关方法调整亮度和对比度,最后保存图片。

编写程序入口。通过for 循环读取指定路径下的全部图片文件,再调用filter() 方法为图片应用灰度滤镜。

# -*- coding: utf-8 -*-

"""

@Time : 2021/2/14 16:31

@Auth : Yvon~早安阳光

@File :tuphuidulvjing

"""

import cv2 # 导入OpenCV-Python模块

import os # 导入文件与系统模块

import numpy as np # 导入数值计算库

'''

* 功能:为图片应用灰度滤镜,并且保存图片到指定路径

* filein:要应用滤镜的图片的路径

* picture_name:要应用滤镜的图片的文件名

'''

def filter(filein,picture_name):

imgI_filename = os.path.join(filein,picture_name) # 源文件路径

imgO_filename = os.path.join(r'out', picture_name) # 目标文件路径

img_rgb = cv2.imread(imgI_filename) # 读取源图片

img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY) # 转换为灰度

# 调整亮度和对比度

res = np.uint8(np.clip((1.2 * img_gray + 0), 0, 255))

cv2.imwrite(imgO_filename, res) # 保存转换后的图片

if __name__ == '__main__':

imagelist = [] # 创建空列表

# 循环读取指定路径下的文件名

for filename in os.listdir(r'in/'):

imagelist.append(filename) # 将文件名添加到imagelist

print(filename)

filter(r'in',filename) # 为图片应用灰度滤镜

85f953a0edcd

整体效果.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值