当前位置: 移动技术网 > IT编程>脚本编程>Python > 详解Python给照片换底色(蓝底换红底)

详解Python给照片换底色(蓝底换红底)

2019年06月11日  | 移动技术网IT编程  | 我要评论

g.t病毒进化者,玛古克的宝箱,北京书展

现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用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

以上两个文件下载地址:

numpy下载:

opencv下载 :

代码

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

动图演示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网