详解Python给照片换底色(蓝底换红底)
2019-03-28 11:01
731 查看
现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用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下载:https://www.jb51.net/softs/574953.html
opencv下载 :https://www.jb51.net/softs/333884.html
代码
在当前文件夹新建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
动图演示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Python内建数据结构详解
- 详解Python中的迭代器和使用
- Python详解之包管理:__init__.py
- 【转载】Python中使用正则表达式 详解
- Python 爬虫多线程详解及实例代码
- Python-select详解(select、epoll)
- 详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
- python魔法方法-属性转换和类的表示详解
- Python Yield Generator 详解
- Python的hasattr() getattr() setattr() 函数使用方法详解
- python中标示符作用详解
- Python中str.format()详解
- Python中的字典详解
- python之获取指定IP的地理位置详解
- Python - 字典(dict) 详解 及 代码
- python基础教程之元组操作使用详解
- Python魔术方法详解
- python3内置函数详解
- Python魔术方法详解
- Python logging模块详解