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
目录
相关文章
|
7月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
156 0
|
机器学习/深度学习 缓存 人机交互
OpenCV-实现背景分离(可用于更改证件照底色)
OpenCV-实现背景分离(可用于更改证件照底色)
389 1
|
数据安全/隐私保护 计算机视觉
opencv,照片加水印
opencv,照片加水印
94 0
|
算法 Unix Linux
Python 教你用OpenCV实现给照片换底色
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。
556 0
Python 教你用OpenCV实现给照片换底色
|
计算机视觉
OpenCV | OpenCV 图片换底色
OpenCV | OpenCV 图片换底色
143 0
OpenCV | OpenCV 图片换底色
|
计算机视觉 Python
Python OpenCV真香——去除照片白色背景
Python OpenCV真香——去除照片白色背景
1192 0
Python OpenCV真香——去除照片白色背景
|
2月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
535 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
3月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
55 4
|
3月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)