歡迎光臨
每天分享高質量文章

Python給照片換底色,基於opencv模組

(點選上方公眾號,可快速關註一起學Python)

作者: TANKING    原文連結:

https://segmentfault.com/a/1190000018599038

 

現在網上出現了很多線上換底色的網頁版工具是這麼做的呢?其實用Python就可以實現。

 

環境要求

Python3 
numpy函式庫 
opencv庫

安裝

下載適應版本的numpy函式庫,我電腦是WIN10 64位,安裝的函式庫是
numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl

下載適應版本的opencv庫,我電腦是WIN10 64位,安裝的庫是
opencv_python-3.3.1-cp36-cp36m-win_amd64.whl

安裝以上兩個庫,WIN+R->CMD->CD到當前兩個庫所在的檔案夾,輸入以下命令逐步安裝

pip install numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl
pip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl

以上兩個檔案下載地址:

https://download.csdn.net/download/weixin_39927850/11045184

 

 

程式碼

 

在當前檔案夾新建opencv.py,複製以下程式碼

 

import cv2
import  numpy as np

img=cv2.imread('timg.jpg')
#縮放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

#轉換hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

#腐蝕膨脹
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

#遍歷替換
for i in range(rows):
    for j in range(cols):
        if dilate[i,j]==255:
            img[i,j]=(0,0,255)#此處替換顏色,為BGR通道
cv2.imshow('res',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

說明

第四行timg.jpg是原圖片路徑
lower_blue=np.array([90,70,70])裡面三個數值可以控制好處理出來的效果和噪點

WIN+R->CMD->CD到opencv.py檔案夾,執行

DEMO

 

 

效果演示

 

    贊(0)

    分享創造快樂