查看原文
其他

Python给照片换底色,基于opencv模块

Python高校 2020-10-08

点击上方“Python高校”,关注

人生苦短,我学 Python!


作者:TANKING    原文链接:
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.whl
pip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl
以上两个文件下载地址:
https://download.csdn.net/download/weixin_39927850/11045184


代码

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


效果演示




大家好 我是Gao,  学习者可加我微信 获取更多项目源码





更多好文

昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码

糟了,偶看看某些网站记录被老婆用Python 扒下来了!

我给曾经暗恋的初中女同学,用Python实现了她飞机上刷抖音

被女朋友三番五次拉黑后,我用 Python 写了个“舔狗”必备神器

最全 14 张思维导图:教你构建 Python 编程的核心知识体系!

周末隔壁老王和媳妇玩24点,我忍不住用 Python...

七夕没给女友送礼物,看 Python 教你哄女票开心

为了给女友挑合适的内衣,我用  Python 爬了天猫内衣店的数据

Python爬完数据后,我终于买车不用坐引擎盖哭啦

用 Python 来找合适的妹子

使用 Python 进行微信好友分析

这里除了干货一无所有

人生苦短,我选在看


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存