Python批量為照片應(yīng)用灰度濾鏡

引言

黑白照片很有年代感,讓人懷念,自己動(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容