opencv进阶 ——(七)图像处理之寸照换背景
寸照换背景,通常指的是将个人证件照片的背景色更换为另一种颜色,如白色、蓝色或红色等,以满足不同用途的要求。例如,护照照片通常要求白色背景,而身份证照片可能需要蓝色背景。这个过程通常涉及到图像处理技术,尤其是图像分割和合成技术。以下是一个简单的介绍:
步骤
-
图像预处理:
- 首先,对原始图像进行去噪和平滑处理,以便后续的背景分割更加准确。
-
背景分割:
- 使用图像分割算法,如阈值分割、边缘检测、色彩空间转换(如从RGB到HSV)或机器学习方法(如深度学习的语义分割模型),来识别并分离出前景(人像)和背景。
-
前景提取:
- 一旦背景被分割出来,通常会使用掩模来标记和提取前景,保留人像部分。
-
背景替换:
- 创建一个新的背景图像,通常是纯色背景,如白色、蓝色或红色。然后,将提取的前景(人像)放置在这个新背景上。
-
融合与调整:
- 为了使前景与新背景融合得更好,可能需要进行边缘平滑处理,例如羽化或模糊,以消除硬边缘。同时,可能需要调整前景的亮度、对比度和色彩,使其与新背景协调一致。
-
输出图像:
- 最后,将处理后的图像保存为所需的格式和分辨率。
背景分割
边缘检测
一般来说,寸照是纯色背景,存在比较明显的边界,所以,首先我们尝试通过边缘检测来分离背景色和人像。

虽然存在比较明显的边界,但边缘检测无法找出完整的闭环团,因此无法得到人像区域。
二阶导数法
纯色背景颜色一致,进行二阶求导,数值为零,人脸区域由于存在颜色变换,因此会有数据,由此可以得到人脸部分的大致区域。

自适应二值法

基于背景颜色均值法分离背景
在得到人像区域后,可以通过一下步骤分离背景,更改颜色然后合并成新的图像
1、获取背景区域
2、转换到HSV颜色系统,计算背景区域颜色均值
3、获取给行阈值内,均值颜色接近的区域
4、修改背景颜色区域的颜色
5、增加滤波降低边缘色差

上图可以看出,存在比较明显的红色边界,即便是加了滤波也还比较明显。
基于grabCut函数分割人像
grabCut 函数是OpenCV库中用于图像分割的一个算法,它结合了交互式和自动分割的方法。grabCut基于图形割(Graph Cut)算法,用于从复杂背景中提取前景对象。这个算法特别适合于需要用户参与的场景,用户可以通过指定一些初始的像素标记(如前景、背景或不确定区域)来指导算法进行分割。
grabCut函数的主要优点是它能够迭代地优化分割结果,即使初始的用户标记不是很精确,也能逐渐改进分割质量。


图像放大后,依然可以看出比较明显的边界
相关文章:
opencv进阶 ——(七)图像处理之寸照换背景
寸照换背景,通常指的是将个人证件照片的背景色更换为另一种颜色,如白色、蓝色或红色等,以满足不同用途的要求。例如,护照照片通常要求白色背景,而身份证照片可能需要蓝色背景。这个过程通常涉及到图像处理技术…...
每日复盘-20240529
20240529 六日涨幅最大: ------1--------300956--------- 英力股份 五日涨幅最大: ------1--------301361--------- 众智科技 四日涨幅最大: ------1--------301361--------- 众智科技 三日涨幅最大: ------1--------300637--------- 扬帆新材 二日涨幅最大: ------1--------30…...
mybatis问题汇总
Mapped Statements collection does not contain value for mapper.xml中namespace存在问题 使用 ${}实现关键字(表名、列名)的可变 #{} 和 ${} 的区别...
Kafka SSL认证
证书生成 在kafka安装目录下/certificates生成keystore和trust文件,在其中一台机器声生成证书,然后将 生成的server.keystore.jks和server.truststore.jks文件拷贝其他broker节点上去即可 1.生成keystore [rootm1 certificates]# keytool -keystore se…...
【Spring】认识 Spring AOP
认识 Spring AOP 1.什么是 AOP2.AOP 中的概念3.用 AOP 方式管理日志3.1 编写 AOP 日志注解类3.2 编写控制器用于测试 1.什么是 AOP AOP(Aspect Oriented Program,面向切面编程)把业务功能分为核心、非核心两部分。 核心业务功能:…...
什么是访问控制漏洞
什么是AC Bugs? 实验室 Vertical privilege escalation 仅通过隐藏目录/判断参数来权限控制是不安全的(爆破url/爬虫/robots.txt/Fuzz/jsfinder) Unprotected functionality 访问robots.txt 得到隐藏目录,访问目录 ,…...
python基于百度,哈工大等停用表进行的中文分词
import os import pandas as pd import jieba# 加载停用词 def load_stopwords(filenames):stopwords set()for filename in filenames:with open(filename, r, encodingutf-8) as f:for line in f:stopwords.add(line.strip())return stopwords# 中文分词并去除停用词 def se…...
【学习笔记】计算机组成原理(七)
指令系统 文章目录 指令系统7.1 机器指令7.1.1 指令的一般格式7.1.2 指令字长 7.2 操作数类型和操作类型7.2.1 操作数类型7.2.2 数据在存储器中的存放方式7.2.3 操作类型 7.3 寻址方式7.3.1 指令寻址7.3.1.1 顺序寻址7.3.1.2 跳跃寻址 7.3.2 数据寻址7.3.2.1 立即寻址7.3.2.2 直…...
pillow学习4
ImageChops 模块 在 Pillow 库的内置模块 ImageChops 中包含了多个用于实现图片合成的函数。这些合成 功能是通过计算通道中像素值的方式来实现的。其主要用于制作特效、合成图片等操作。 常用的内置函数如下所示: (1)相加函数 add()…...
外企如何有效面对日益严格的跨境数据传输法律?
在当今这个数据驱动的时代,随着全球化步伐的加快,企业跨国界的数据交流已成为常态。但随之而来的,是各国政府对跨境数据传输日益严格的规定和监管,这让众多外资企业(简称“外企”)在享受全球市场红利的同时…...
运维开发.MySQL.范式与反范式化
运维开发 MySQL.三大范式 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/artic…...
HCIA-HarmonyOS Application Developer 课程大纲
一:鸿蒙 Mac 版、 Windows 版【编辑器】和【模拟器】 & 鸿蒙基础环境搭建 - ( 3 课时) - Mac arm 版开发环境搭建:Mac arm 版模拟器安装及配置;安装 DevEcoStudioPreview 版本; - Windows 版开发…...
如何用Java实现SpringCloud Alibaba Sentinel的熔断功能?
在Java中使用Spring Cloud Alibaba Sentinel实现熔断功能的步骤如下: 添加依赖 在项目的pom.xml文件中添加Spring Cloud Alibaba Sentinel的依赖: <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud…...
Day27
Day27 反射案例 案例一:万能数组扩容 注意:copyOf、toString public class Test01 {/*** 知识点:反射案例 之 万能数组扩容* * 注意:copyOf、toString*/public static void main(String[] args) {String[] ss {"aaa"…...
uni-app App端实现文字语音播报(Ba-TTS)
前言 最近在遇到消息提示语音播放出来,查了一圈文档发现并没有自带api 后面想起支付宝收钱播报,不受限与系统环境和版本环境(后面查阅他是音频实现的) 如果是由安卓端需要语音播放功能-直接使用Ba-TTs救急(需要付费2…...
在WHM中如何调整max_upload_size 参数大小
今日我们在搭建新网站时需要调整一下PHP参数max_upload_size 的大小,我们公司使用的Hostease的美国独立服务器产品默认5个IP地址,也购买了cPanel面板,因此联系Hostease的技术支持,寻求帮助了解到如何在WHM中调整PHP参数࿰…...
docker system prune命令详解
docker system prune 是 Docker 中的一个命令,用于清理 Docker 系统中的未使用资源,以帮助回收磁盘空间。这个命令执行一系列操作来删除不再需要的项目,具体包括: 删除所有已停止的容器。删除所有未被任何容器引用的网络…...
使用jdk自带jhat工具排查OOM问题
使用jdk自带jhat工具排查OOM问题 OOM java.lang.OutOfMemoryError: Java heap space排查步骤 编写一个测试类 public class TestJVM {Testpublic void test1() throws InstantiationException, IllegalAccessException {List<A> list new ArrayList<>();for (i…...
独孤思维:付费就是割韭菜,千万别上当
01 很多人觉得付费是坑,是割韭菜。 其实大多数情况,你所付费的,是购买了别人的经验。 让你能够少走很多弯路,让你能够节约大量时间和精力,购买别人的成功路径。 打一个粗俗的比方。 很多人都说,买的资料&am…...
【PB案例学习笔记】-12秒表实现
写在前面 这是PB案例学习笔记系列文章的第11篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...
