现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用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到当前两个库所在的文件夹,输入以下命令逐步安装
1
2
|
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,拷贝以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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
动图演示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000018599038