python使用opencv换照片底色
第一次使用opencv,遇到了很多问题,记录一下
安装问题
代理
由于pip使用了代理而电脑代理没开,导致pip install opencv-python时一直报错连接不上代理
解决办法:
- 使用pip install -i <清华源>
- 开启代理
无法引入jar包
安装完成后在交互模式可以正常使用
输入python
import cv2
不报错就说明正常安装了
但是在jupyter notebook 中引入一直报错,找不到cv2模块
经过百度后,测试如下
在交互模式下输入如下命令查看python环境
import sys
sys.executable
这是anaconda下的一个虚拟环境,没有问题
再在jupyter notebook下输入同样的命令,查看python环境,发现竟然不是上述环境
而是 anaconda3/share下的环境
至此,就查询到了问题的原因:
jupyter notebook 是anaconda的公共包
进入虚拟环境后 pip install jupyter 再次启动jupyter notebooke 就正常了
使用opencv及原理
这是个啥? -> http://c.biancheng.net/view/1089.html
使用opencv换照片底色的原理很简单
- 读取照片
- 将照片转换为灰度图
- 提取灰度图底色的BGR上下边界
- 使用opencv转换背景底色的BGR值(第三步已经获取了背景色的上下边界,边界之中的所有颜色都会被转换为255,边界之外的颜色都会被处理为0)
- 循环处理像素点,将第四步转换后的255(背景色)转换为你想要的颜色
- 输出,保存
import cv2
import numpy as np
# 读取照片
img=cv2.imread('zhuominghua.jpg')# 图像缩放
img = cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
print(rows,cols,channels)
cv2.imshow('[img]',img)# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# 查看灰度图
cv2.imshow('hsv',hsv)# 图片的二值化处理
lower_blue=np.array([100,0,200])
upper_blue=np.array([200,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
print(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 erode[i,j]==255: # 像素点为255表示的是白色,我们就是要将白色处的像素点,替换为红色img[i,j]=(255,255,255) # 此处替换颜色,为BGR通道,不是RGB通道
# 显示处理后的图片
cv2.imshow('res',img)# 保存
cv2.imwrite("zhuominghu_white.jpg", img)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)
代码是参照网上的例子,经过实验,很好用
但是在图片的二值化处理阶段,比较麻烦,需要从灰度图中获取背景色的BGR值,再计算上下边界
灰度图的颜色使用BGR表示的,而不是 RGB
使用的到方法:
- imread() 读取源图片
- imshow() 展示图片
- imwrite() 输出图片
- cvtColor() 转换灰度图
- inRange() 二值化处理,将上下边界内的颜色值处理为255,其他的颜色值处理为0
python使用opencv换照片底色相关推荐
- python RemoveBg api换照片底色
测试了好几个代码,发现还是这个AI的最完美,最蛋疼的是 有各种限制. 偶尔用一次还是可以的 https://www.remove.bg/zh/ 注册账号,即可使用API from removebg i ...
- python换照片底色_Python 利用OpenCV给照片换底色的示例代码
OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和M ...
- 使用Python,OpenCV缩放照片(忽略宽高比,保持宽高比)
使用Python,OpenCV缩放照片(忽略宽高比,保持宽高比) 1. 效果图 1.1 保持宽高比效果图 1.2 忽略宽高比效果图 1.3 opencv各插值效果图 2. 原理 3. 源码 参考 这篇 ...
- 使用Python,OpenCV对照片模拟长时间曝光效果
使用Python,OpenCV对照片模拟长时间曝光效果) 1. 效果图 2. 原理 2.1 长时间曝光简介 2.2 结论 3. 源码 参考 这篇博客将介绍如何使用OpenCV和图像处理技术来模拟长时间 ...
- python换照片底色_详解Python给照片换底色(蓝底换红底)
现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...
- python换照片底色_Python学习给照片换底色(蓝底换红底)
环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN10 64位,安装的函数库是 numpy-1.13.1+mkl-cp36-cp36m-w ...
- 教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)
在我们的生活中常常要用到各种底色要求的证件电子照,红底.蓝底.或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色. P ...
- 教你用OpenCV 和 Python给证件照换底色(蓝底 <->红底->白底)
在我们的生活中常常要用到各种底色要求的证件电子照,红底.蓝底.或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色. P ...
- Python OpenCV 修改一寸照片底色,图像处理取经之旅第 20 天
昨天写美女换装案例的时候,忽然间想到,相同的代码可以复用照片底色中,所以本文继续夯实一下对应的效果吧. 本案例使用的素材来源网络,如有侵权,联系橡皮擦删除 二值化参数调整 使用上篇博客,实现的一个小功 ...
最新文章
- 如何优雅地用TensorFlow预测时间序列:TFTS库详细教程
- 中文字符匹配java_java正则匹配HTML中a标签里的中文字符示例
- 问题 G: 区间权值
- ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解
- 组态王和modbus协议
- 漫画:一文学会面试中常问的 IO 问题!
- 2019 国家网信办启动网络生态治理专项行动 剑指12类违法违规互联网信息
- [使用心得]maven2之m2eclipse使用手册之二m2eclipse功能介绍
- VPC下访问FTP的问题
- 最近开发的NFC读写器控制软件
- 微型计算机的应用形式,微型计算机基本原理与应用
- 约瑟夫问题(Josephus problem)详解
- c# 使用Entity Framework操作Access数据库
- 世界各国简称 英文名称 电话区号JSON数据包
- 【python】启动客户端报错:OSError: [WinError 740] 请求的操作需要提升。
- do.....while(0)让你虎躯一震的用法
- centos7 分辨率修改_centos系统修改屏幕分辨率问题
- DCOS搭建zookeeper集群搭建
- 在Windows下也可以玩Ghost
- gsensor direction调试