引言
黑白照片很有年代感,讓人懷念,自己動(dòng)手可以把自己喜愛的彩色照片設(shè)計(jì)成有情懷的黑白照片,使用 OpenCV-Python 模塊實(shí)現(xiàn)批量為照片添加灰度濾鏡.

紅包.png

早安陽光.png
思路設(shè)計(jì)
主要應(yīng)用 Python 的第三方模塊 OpenCV-Python 和 NumPy 模塊實(shí)現(xiàn)。在使用第三方模塊時(shí),需要先安裝。
安裝OpenCV和NumPy
-
pip install opencv-python
安裝OpenCv.png - pip install numpy
考慮到pip install opencv-python和pip install numpy安裝下載慢,可以下載whl格式文件安裝。
-
備注: 先安裝numpy模塊,再安裝opencv-python模塊
whl格式安裝.png
延申學(xué)習(xí)說明
pip3.9.exe install D:\Python38\Scripts\opencv_python-4.5.1.48-cp39-cp39-win_amd64.whl
- pip3.9.exe 說明當(dāng)前系統(tǒng)版本為Python3.9
- -cp39-cp39 也是說明系統(tǒng)版本為Python3.9
- win_amd64.whl 說明當(dāng)前系統(tǒng)64位
成功安裝OpenCV-Python 和 NumPy 模塊

pip list查看.png
代碼參考分析
- 導(dǎo)入本實(shí)例所需的模塊。這里為OpenCV-Python、NumPy 和OS 模塊。其中,OS 模塊是為了獲取指定路徑下的文件而導(dǎo)入的。
- 編寫用于添加灰度濾鏡的方法filter()。該方法需要傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)用于指定圖片路徑,第二個(gè)參數(shù)用于指定圖片名稱。在該方法中,首先將源文件路徑和文件名拼接為源文件的絕對(duì)路徑,并且生成目標(biāo)文件路徑,然后應(yīng)用OpenCV-Python 模塊的imread() 方法讀取源圖片,再使用cvtColor() 方法將其轉(zhuǎn)換為灰度,并且使用NumPy 模塊的相關(guān)方法調(diào)整亮度和對(duì)比度,最后保存圖片。
- 編寫程序入口。通過for 循環(huán)讀取指定路徑下的全部圖片文件,再調(diào)用filter() 方法為圖片應(yīng)用灰度濾鏡。
# -*- coding: utf-8 -*-
"""
@Time : 2021/2/14 16:31
@Auth : Yvon~早安陽光
@File :tuphuidulvjing
"""
import cv2 # 導(dǎo)入OpenCV-Python模塊
import os # 導(dǎo)入文件與系統(tǒng)模塊
import numpy as np # 導(dǎo)入數(shù)值計(jì)算庫
'''
* 功能:為圖片應(yīng)用灰度濾鏡,并且保存圖片到指定路徑
* filein:要應(yīng)用濾鏡的圖片的路徑
* picture_name:要應(yīng)用濾鏡的圖片的文件名
'''
def filter(filein,picture_name):
imgI_filename = os.path.join(filein,picture_name) # 源文件路徑
imgO_filename = os.path.join(r'out', picture_name) # 目標(biāo)文件路徑
img_rgb = cv2.imread(imgI_filename) # 讀取源圖片
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY) # 轉(zhuǎn)換為灰度
# 調(diào)整亮度和對(duì)比度
res = np.uint8(np.clip((1.2 * img_gray + 0), 0, 255))
cv2.imwrite(imgO_filename, res) # 保存轉(zhuǎn)換后的圖片
if __name__ == '__main__':
imagelist = [] # 創(chuàng)建空列表
# 循環(huán)讀取指定路徑下的文件名
for filename in os.listdir(r'in/'):
imagelist.append(filename) # 將文件名添加到imagelist
print(filename)
filter(r'in',filename) # 為圖片應(yīng)用灰度濾鏡

整體效果.png

