首頁  >  文章  >  後端開發  >  Python實作為照片換底色(附程式碼)

Python實作為照片換底色(附程式碼)

不言
不言轉載
2019-03-21 15:57:396077瀏覽

這篇文章帶給大家的內容是關於Python實現為照片換底色(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

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

環境要求

Python3
numpy函數庫
opencv庫

安裝

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

下載適應版本的numpy函式庫,我電腦是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/dow...

Python實作為照片換底色(附程式碼)

程式碼

在目前資料夾新建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資料夾,運行

這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的python教程視頻欄目!

以上是Python實作為照片換底色(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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