首頁 >後端開發 >Python教學 >跟女朋友旅遊三天,Python治好了我的精神內耗...

跟女朋友旅遊三天,Python治好了我的精神內耗...

王林
王林轉載
2023-04-12 21:10:101633瀏覽

前陣子請了年假,陪女友出了趟遠門,途中心情愉悅景色宜人,不過累也是真的累,尤其在幾天都沒休息好還要一路顛簸回到家之後。

誰想到前腳剛踏回家門的我,剛準備休息,就收到了這樣的消息:

跟女朋友旅遊三天,Python治好了我的精神內耗...

把圖片逐一保存,沒想到她四天功夫竟然拍了小兩百張照片。

這就有點讓我為難了:首先我現在的工作不需要切圖,PS也早就卸載了,其次就算有PS,光是給幾百張圖套上預設也得好一會兒才能搞定。又累又睏還要做事,想想就很折磨。

我有點一籌莫展,一邊琢磨一邊端詳起這些照片來:

跟女朋友旅遊三天,Python治好了我的精神內耗...

#由於原圖品質還可以,所以如果修的話其實不需要太多操作,因為當天雲彩很多光線不是很好,照片顏色有點平淡,可以適當加一下飽和度,同時降低一下亮度,就能得到一張不錯的照片了。

這時我突然想起前陣子看OpenCV時用過的一個api,借助python,我們說不定能快速把這幾百張圖搞定。

首先介紹HSV,HSV是一種色彩空間,與RGB透過紅綠藍的組合來描述顏色不同,HSV把顏色拆分為色調(H)、飽和度(S)和明度( V)三個維度,這樣能夠更直接的表達色彩的明暗以及鮮豔程度,因此廣泛應用於影像辨識領域。

跟女朋友旅遊三天,Python治好了我的精神內耗...

借助opencv的split()函數,我們可以將圖片的HSV變數分離出來,然後修改後再用merge()函數合成一張新的圖片,達到批量修改飽和度和明度的效果。同時split()也可以將圖片的RGB三顏色頻道分離出來,然後單獨對某個頻道進行修改。

話不多說,開始操作:

import cv2
import numpy as np
import os

def modify_image(img_path, target_dir):
# 读取全部跟女朋友旅遊三天,Python治好了我的精神內耗...
pic = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
# 将跟女朋友旅遊三天,Python治好了我的精神內耗...修改为HSV
pichsv = cv2.cvtColor(pic, cv2.COLOR_BGR2HSV)
# 提取饱和度和明度
H,S,V = cv2.split(pichsv)
# S为饱和度,V为明度
new_pic = cv2.merge([np.uint8(H), np.uint8(S*1.4), np.uint8(V*0.9)])
# 将合并后的跟女朋友旅遊三天,Python治好了我的精神內耗...重置为RGB
pictar = cv2.cvtColor(new_pic, cv2.COLOR_HSV2BGR)
# 获取原文件名
file_name = img_path.split("/")[-1]
# 将跟女朋友旅遊三天,Python治好了我的精神內耗...写入目录
cv2.imwrite(os.path.join(target_dir, file_name), pictar)

root, dirs, files = next(os.walk("./test/"))

for item in files:
img_path = os.path.join(root,item)
process_image(img_path, "./target/")

三下五除二搞定了程式碼,看眼手機的功夫,幾百張圖片就處理完畢了。左邊是修改前,右邊是修改後,可以看到效果還是很明顯的,顏色飽滿了許多。

跟女朋友旅遊三天,Python治好了我的精神內耗...

幾分鐘就搞定了所有的圖片,女朋友滿臉不可思議,但對結果很滿意,我當然不會告訴她我是怎麼做到的啦。

以上是跟女朋友旅遊三天,Python治好了我的精神內耗...的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除