opencv换照片底色

简介: opencv换照片底色

第一次使用opencv,遇到了很多问题,记录一下

安装问题

代理

由于pip使用了代理而电脑代理没开,导致pip install opencv-python时一直报错连接不上代理

解决办法:

  1. 使用pip install -i <清华源>
  2. 开启代理

无法引入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换照片底色的原理很简单

  1. 读取照片
  2. 将照片转换为灰度图
  3. 提取灰度图底色的BGR上下边界
  4. 使用opencv转换背景底色的BGR值(第三步已经获取了背景色的上下边界,边界之中的所有颜色都会被转换为255,边界之外的颜色都会被处理为0)
  5. 循环处理像素点,将第四步转换后的255(背景色)转换为你想要的颜色
  6. 输出,保存


importcv2importnumpyasnp# 读取照片img=cv2.imread('zhuominghua.jpg')
# 图像缩放img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels=img.shapeprint(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)#遍历每个像素点,进行颜色的替换foriinrange(rows):
forjinrange(cols):
iferode[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

使用的到方法:

  1. imread() 读取源图片
  2. imshow() 展示图片
  3. imwrite() 输出图片
  4. cvtColor() 转换灰度图
  5. inRange() 二值化处理,将上下边界内的颜色值处理为255,其他的颜色值处理为0
目录
相关文章
|
15天前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
61 0
|
7月前
|
机器学习/深度学习 缓存 人机交互
OpenCV-实现背景分离(可用于更改证件照底色)
OpenCV-实现背景分离(可用于更改证件照底色)
219 1
|
数据安全/隐私保护 计算机视觉
opencv,照片加水印
opencv,照片加水印
69 0
|
算法 Unix Linux
Python 教你用OpenCV实现给照片换底色
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。
487 0
Python 教你用OpenCV实现给照片换底色
|
计算机视觉
OpenCV | OpenCV 图片换底色
OpenCV | OpenCV 图片换底色
120 0
OpenCV | OpenCV 图片换底色
|
计算机视觉 Python
Python OpenCV真香——去除照片白色背景
Python OpenCV真香——去除照片白色背景
1079 0
Python OpenCV真香——去除照片白色背景
|
13天前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
|
15天前
|
计算机视觉
OpenCV图像运动模糊
OpenCV图像运动模糊
16 0
|
15天前
|
计算机视觉
OpenCV图像阈值
OpenCV图像阈值
6 0
|
15天前
|
计算机视觉
OpenCV图像混合
OpenCV图像混合
14 0