用Python给女友照片换底色,程序员不需要Potoshop

作为一名程序员,你可以不会ps,但修改图片这种事情一定要能做

环境要求

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

具体实现

在当前文件夹新建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()

运行

猜你喜欢

转载自blog.csdn.net/weixin_44138053/article/details/89357010