参考博客:python更换背景
今天网上报名用到了证件照,要求浅色或者白色,无奈我手头唯一一张像样的证件照背景是大红色(也近似为浅色?好像不太行。。。)网上搜了一段代码,尝试了解了一下它的原理。大体就是:
先将原图转化为灰度图,再从灰度图中找出背景色的RGB范围,进行二值化。将背景区域变为白色,其他变成黑色。然后将白色区域写成目标颜色的RGB。
看起来好像顺理成章,但是实际操作的时候发现背景色的RGB的取值范围取的有问题(原博客的背景是蓝色,我需要自己确定出我的红色背景的取值范围)导致二值化后要么全黑要么全白。我还特地加了一段读取指定点RGB值的代码img.getpixel((0,0))还是没能解决。先把这个问题记录一下,等后面有空了再解决掉它。
如果各位看到了并且知晓了这个问题的解决方法,请评论交流一下。

import cv2
import numpy as np
# 读取照片
img=cv2.imread(r'C:/Users/matebook/Desktop/qian/1.jpg')# 图像缩放
img = cv2.resize(img,None,fx=0.3,fy=0.3)
rows,cols,channels = img.shape
print(rows,cols,channels)# img_medianBlur=cv2.medianBlur(img,3) # 中值滤波,必须是大于1的奇数,如3、5、7…
# cv2.namedWindow('median', cv2.WINDOW_NORMAL)  #此配置名称为median窗口可手动改变大小
# cv2.namedWindow('median', cv2.WINDOW_AUTOSIZE)
# cv2.imshow("median",img_medianBlur)# 显示原始图像
cv2.imshow('img',img)
#img.getpixel((0,0)) #获取指定位置的RGB值# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imwrite(r'C:/Users/matebook/Desktop/hou/2.jpg',hsv, [int(cv2.IMWRITE_JPEG_QUALITY),100])
# 显示灰度图像
cv2.imshow('hsv',hsv)# 图片的二值化处理,可能会出现噪声(白点),有的图片显示的很明显,这就需要我们进行腐蚀或膨胀。
lower_blue = np.array([60,40,1])
upper_blue = np.array([78,55,6])
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(mask,None,iterations=1)  #进行膨胀操作#显示膨胀后的图片
cv2.imshow('dilate',dilate)#遍历每个像素点,进行颜色的替换
for i in range(rows):for j in range(cols):if dilate[i,j]==255: # 像素点为255表示的是白色,此处将白色处的像素点替换为红色(将if dilate[i,j]==255中的dilate换成erode对比试试)img[i,j]=(255,255,240) # 此行将蓝底替换成红底,即(0,0,255)代表红色,由于历史原因,为BGR(蓝绿红)通道,不是RGB(红绿蓝)通道,所以255放第三个位置
#img = cv2.flip(img, 1)    #图像反转   1水平翻转   0垂直翻转   -1水平垂直翻转
cv2.imshow('red',img)# 窗口等待的命令,0表示无限等待
k = cv2.waitKey(0)  #监听键盘事件
if k == ord('s'):   #英文状态下键盘按s键,会将图片保存至桌面font = cv2.FONT_HERSHEY_DUPLEX#参数依次为:涂鸦的图片、涂鸦的文字、位置、字体、字体大小、字体颜色、字体画笔粗细img = cv2.putText(img,"1",(10,30),font,0.5,(0,0,0),2)cv2.imwrite(r'C:/Users/matebook/Desktop/hou/1.jpg',img, [int(cv2.IMWRITE_JPEG_QUALITY),100])cv2.destroyWindow('red')  #保存完后销毁名称为red的窗口
else:cv2.destroyAllWindows()

python更换证件照背景相关推荐

  1. Python利用paddlehub实现批量抠图和更换证件照背景底色

    Python利用paddlehub实现批量抠图和更换证件照背景底色,图片使用卓别林的个人肖像,代码来源抠图功能实现的博客.代码做了一些更改已实现蓝底背景功能,并实现边界框图提取. import os ...

  2. c++图片背景替换为白色_4种方法,3秒快速更换证件照背景!你还要去照相馆花冤枉钱吗?...

    搞不懂都2020年了,你们换个证件照底色还跑照相馆的吗? 那不跑照相馆,应该怎么换? "PPT啊!PS啊!手机啊!"那么多方法,还能没有一个适合你用的? 一.电脑端更换底色方法 1 ...

  3. 怎么更换证件照背景颜色?

    常用的证件照背景颜色有红蓝白三种颜色,各种场合需要的证件照的背景颜色不尽相同,例如四六级考试要求蓝色底的证件照,于是跑去照相馆拍了张蓝底的证件照,明天公司的入职档案又要求白底的证件照,那要怎么办呢,难 ...

  4. 在ps中用魔术棒更换证件照背景

    在PS中用魔术棒更换证件照背景 技巧: 魔术棒,快速选择工具 步骤: 导入需要修改的证件照 在工具栏中找到魔棒工具或者使用快捷键w 运用魔棒工具将人物从原图中抠出来 打开一个新的文件 背景色调试为蓝色 ...

  5. 如何给照片换背景?怎么用手机更换证件照背景颜色

    有时候在使用电子版的证件照的时候,由于证件照的背景颜色与要求不符所以无法使用证件照的情况,那么应该如何给照片换背景(https://www.yasuotu.com/coloreplace)?首先我们要 ...

  6. 深度学习项目实践——制作一个能一键更换证件照背景的软件

    背景 前段时间找工作,做简历的时候看中了一个红色为底色的模板,但是发现我的证件照只有蓝色底色的,这和简历不搭啊!有点强迫症的我怎么能忍!果断上网找方法换证件照底色(不要问我为什么不去重新拍一张,因为我 ...

  7. 怎么更换证件照背景?这4个方法简单好用,强烈推荐

    不同用途的证件照对于背景颜色要求是不同的,整理了一些不同颜色的常用用途,大家可以参考一下. 白底:护照.签证.驾驶证.身份证等: 红底:保险.医保.考证.证书.IC卡.暂住证.结婚证等: 蓝底:简历. ...

  8. Opencv中Kmeans使用学习,更换证件照背景,QT界面,函数实现,C++实现

    kmeans简介 kmeans是机器学习中的一种聚类算法,简单来说就是把在一个区域中的点进行分类,分类的类别由自己定.具体的数学原理大家可以在很多的blog中学习,在这里主要介绍opencv中pyth ...

  9. 新技能Get:使用excel更换证件照背景

    经常遇到证件照更换背景色的需求,学习了一种通过excel的方式更换背景,记录下. 工具:excel2013 插入照片 打开excel并插入需要修改的照片,如下图: 去掉背景色 双击照片,进入格式界面. ...

  10. python 更换图像背景_Python几行代码更换照片底色 图像处理 openCV

    测试环境及依赖python3.6 numpy 1.19.0 opencv-python 4.3.0.36 1.读取图片并进行展示imread() 读取相应图片 imshow() 对图片进行展示 wai ...

最新文章

  1. (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
  2. 服务总线yali测试_满足吉利要求的车载总线测试服务
  3. C和C++中读取不定数量的输入数据
  4. AndroidWidget实践 --- EverydayTips开发(6)
  5. 自增主键与UUID的优缺点
  6. 一、Insertion sort
  7. C#LeetCode刷题-队列
  8. Linux各目录详解
  9. mysql inner join 和join_我想说:mysql的join真的很弱
  10. UIViewController 之LoadView详解
  11. 面空间数据中网格索引和四叉树索引的结合及优化的一种方案
  12. VM虚拟机完美运行macos
  13. AT指令集及其通信测试方式
  14. 中国银行为房地产买家加入新区块链平台
  15. C. Dominant Piranha
  16. 行为金融(二):行为金融的心理学基础
  17. requests爬取4399游戏链接
  18. 使用远程virt-manager安装虚拟机的步骤
  19. python实验心得体会范文大全_万能实验报告心得体会5篇范文
  20. win10下编译OpenCV的微信二维码库给Dotnet使用

热门文章

  1. 指纹和人脸识别 AI 总结
  2. unity设置一个物体是另一个物体的子物体
  3. Atitit java播放mp3 目录 1.1. 不能直接支持mp3播放。。需要解码播放转化为pcm 1 1.2. 使用\javalayer类库播放 3 1.3. ,就是普通的java sound
  4. Atitit 怎么阅读一本书 消化 分析 检索 attilax总结 1. 读书的本质 是数据的处理,大量的数据,处理能力有限的大脑 2 2. ETL数据清洗转换 摘要,缩小数据规模 2 2.1
  5. Atitit 动态调用webservice与客户端代理方式调用
  6. Atitit 编程语言常用算法attilax总结
  7. Atitit.日志系统slf4j的使用
  8. Rust : channel、多线程与 CTP相关机制的模拟
  9. 软件测试技术体系-专业术语
  10. Rust : rand库与不同分布下的随机数产生