Python 利用opencv给白底照片换色,全网唯一
生活随笔
收集整理的這篇文章主要介紹了
Python 利用opencv给白底照片换色,全网唯一
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說來也是湊巧,最近有張白色背景的證件照需要換成紅色,時間不緊張,于是想用Opencv實現,然后網上搜索了一圈,發現都是藍底換其他底色的,沒有一篇關于白底照片換色的,于是自己動手改了下相關的代碼。
直接上代碼:
代碼如下:
import cv2 import numpy as np# 1、讀取照片 img=cv2.imread('test.jpg') rows,cols,channels = img.shape cv2.imshow('img',img)# 2、圖片的二值化處理 ### 二值化處理將圖片轉為黑白兩色,但因為本來就是白底照片,因此在設置顏色上需要調整。 ### lower~upper之間的值將變成255(純白) 其他均變為0(純黑) lower = np.array([251,251,251]) upper = np.array([256,256,256]) mask = cv2.inRange(img, lower, upper) cv2.imshow('mask',mask)# 3、圖像的腐蝕膨脹 # kernel = np.ones((2, 2), np.uint8) 這里經過測試選擇None代替kernel erode=cv2.erode(mask,None,iterations=1) #進行腐蝕操作 cv2.imshow('erode',erode)### dilate進行膨脹操作,iterations=3是為了將白色區域增強,否則換背景色時會出現裸漏色 dilate=cv2.dilate(erode,None,iterations=3) cv2.imshow('dilate',dilate)# 4、遍歷替換底色 for i in range(rows):for j in range(cols):if dilate[i,j]==255: # 像素點255是白色img[i,j]=(0,0,255) # 此處替換顏色,為BGR通道,不是RGB通道 cv2.imshow('red',img)# 窗口等待的命令,0表示無限等待 cv2.waitKey(0)# 5、保存圖片 # cv2.imwrite('test_red.jpg', img)效果如下:
注意點:
2. 進行圖片膨脹操作時,iterations的值要盡量大點,我這里用的3,可自行調整。如若選擇1,會出現如下情況:很明顯紅色底并沒覆蓋全。
寫給鍵盤俠:
當然是PS和各種圖片軟件方便了,寫這篇就是為了補充【opencv白底換色】的空缺。希望能對需要的人有所幫助,感恩。
總結
以上是生活随笔為你收集整理的Python 利用opencv给白底照片换色,全网唯一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python怎么识别文字?正确的方法详解
- 下一篇: python一个对象只能被一个变量引用吗