| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 基于RGB颜色空间使用OpenCV-Python实现照片换底 -> 正文阅读 |
|
[人工智能]基于RGB颜色空间使用OpenCV-Python实现照片换底 |
? ? 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ?一、引言前一阵子家人报考教师资格证考试,因报名需要将蓝底的数字相片换成白底的,老猿虽然在学习图像处理相关开发技术,但并没有熟练使用的图像编辑软件,一般也就是用个windows的画图工具简单处理一下,因此这个事情就只好求助于OpenCV的图像处理技术。不过老猿OpenCV图像处理也就学了最低级的图像处理,其他的还没学完,也就会图像空间变换、腐蚀和膨胀处理、阈值处理、几何变换、四则运算、鼠标键盘事件等。具体请参考《OpenCV-Python图形图像处理》。 二、处理思路2.1、初步思路老猿试图用学过的图像处理基础知识能完成数字图像的处理,大致构思如下:
2.3、实际处理遇到的问题及应对实际处理时,发现远比这个复杂,有2个问题:
在这个时候就需要根据实际相片底色情况调整RGB三个分量阈值处理的阈值,需要能对未能有效识别为背景区域的背景区域方便获取对应像素值。同时为了解决边界问题,可能需要进行背景色的膨胀处理。 2.4、代码实现按照以上处理思路和问题应对方式,老猿实现了一个图像鼠标点击获取像素值输出的函数和一个图像背景色替换的函数,代码如下:
使用的自定义公用模块函数readImgFile,其功能请参考《https://blog.csdn.net/LaoYuanPython/article/details/111351901 OpenCV-Python图形图像处理:自用的一些工具函数功能及调用语法介绍》中的介绍。 三、测试过程3.1、处理图片说明本次介绍以百度“蓝底相片”找到的图片(如果涉及侵权请博客留言处理)作为处理对象介绍: 2、获取图像的背景色的阈值怎么来确认R、G、B的阈值呢?网上有蓝底相片RGB值的多种说法,一方面太过理想化,另一方面说法还矛盾,怎么办呢?其实很简单,相片的左上角一般为底色,将图像加载后,看前几个像素的R、G、B值,让其作为参考阈值上下浮动一下。上述照片的前几个像素值如下: 3、以前几个像素值作为参考来设定阈值我们以B、G、R分别设置为237、115、57来设置阈值,不进行膨胀处理来调用上面实现的changePhotoBG函数来看看效果。 处理效果:
下图四张照片从上到下、从左到右对应分别做了1、2、3、5次膨胀后的结果图像:
因此根据这些输出调整BGR三个分量的值,将调用改为: 四、小结本文介绍了基于BGR颜色空间给蓝底照片换底的实现思路及程序代码,并将相关代码做成了一个比较通用的函数,只需要根据照片的背景色调整底色识别的B、G、R三个分量的阈值,就可以适应不同蓝色的背景色的照片情况,如果要处理非蓝底的,就需要将函数中求背景掩膜的两行代码相应进行调整。 本文代码测试完成并写完博文后,在网上找到了一篇类似功能介绍的博文,不过是基于HSV空间的,因此在标题中特地加上“基于RGB颜色空间”。过2天老猿将基于HSV的实现方式也写出,并提供参考博文对照一下。大家可以这2种颜色空间的实现方式都参考一下。具体博文请见《基于HSV颜色空间用OpenCV-Python给照片换底》。 更多图像处理的内容请参考专栏《OpenCV-Python图形图像处理 https://blog.csdn.net/laoyuanpython/category_9979286.html》、《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》及《图像处理基础知识》的介绍。 如对文章内容存在疑问,可在博客评论区留言,或关注博客左边的:老猿Python 微信公号发消息咨询。 关于老猿的付费专栏
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。 对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。 如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。 老猿Python,跟老猿学Python!? ? 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:27:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |