基于opencv模块更换证件照的背景色

现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用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.whlpip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl

以上两个文件下载地址:

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

代码

在当前文件夹新建opencv.py,拷贝以下代码

import cv2import  numpy as npimg=cv2.imread(timg.jpg)#缩放rows,cols,channels = img.shapeimg=cv2.resize(img,None,fx=0.5,fy=0.5)rows,cols,channels = img.shapecv2.imshow(img,img)#转换hsvhsv=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

效果演示

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.whlpip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl 以上两个文件下载地址: https://download..net/download/weixin_39927850/11045184 代码 在当前文件夹新建opencv.py,拷贝以下代码 import cv2import numpy as npimg=cv2.imread(timg.jpg)#缩放rows,cols,channels = img.shapeimg=cv2.resize(img,None,fx=0.5,fy=0.5)rows,cols,channels = img.shapecv2.imshow(img,img)#转换hsvhsv=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 效果演示 https://segmentfault.com/a/1190000018599038
经验分享 程序员 微信小程序 职场和发展