python opencv实现证件照换底功能
作者:__师寇__ 发布时间:2021-06-22 07:17:58
标签:python,opencv,证件照
本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下
思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景,最后叠加背景和人像得到换底后照片
代码
#-*-coding:utf-8-*-
import cv2
import numpy as np
def cvtBackground(path,color):
"""
功能:给证件照更换背景色(常用背景色红、白、蓝)
输入参数:path:照片路径
color:背景色 <格式[B,G,R]>
"""
im=cv2.imread(path)
im_hsv=cv2.cvtColor(im,cv2.COLOR_BGR2HSV)
aim=np.uint8([[im[0,0,:]]])
hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV)
mask=cv2.inRange(im_hsv,np.array([hsv_aim[0,0,0]-5,100,100]),np.array([hsv_aim[0,0,0]+5,255,255]))
mask_inv=cv2.bitwise_not(mask)
img1=cv2.bitwise_and(im,im,mask=mask_inv)
bg=im.copy()
rows,cols,channels=im.shape
bg[:rows,:cols,:]=color
img2=cv2.bitwise_and(bg,bg,mask=mask)
img=cv2.add(img1,img2)
image={'im':im,'im_hsv':im_hsv,'mask':mask,'img':img}
for key in image:
cv2.namedWindow(key)
cv2.imshow(key,image[key])
cv2.waitKey(0)
return img
#test
if __name__=='__main__':
img=cvtBackground('./photo.jpg',[0,0,180])
结果
来源:https://blog.csdn.net/weixin_38283159/article/details/79189334


猜你喜欢
- Frontpage中的回车键有三种:enter、shift+enter、ctrl+enter。enter键对应于HTML中的<p>
- 方法1: 用file_get_contents 以get方式获取内容:<?php$url='https://www.aspxh
- 分页是每一个程序需要去理解的东西,学习过的几门语言中我发现分页原理都是一样的,下面为php初学者分析一下php分页实现与最后面补充了一个超级
- 问题最近在工作中发现了一个问题,Python代码一直用着免费的Google翻译API插件googletrans,这两天突然就报错了:Trac
- 例如下面这段代码 { var temp = "12"; } alert(temp); //输出 12 如果按照通常的编程
- 环境:win10+phpstorm2022+phpstudy8+lnmp1、phpinfo(); 查看是否安装xdebug,没有
- 多线程到底什么是多线程?说起多线程我们首先从单线程来说。例如,我在这里看书,等这件事情干完,我就再去听音乐。对于这两件事情来说都是属于单线程
- 本文实例讲述了Python数据结构与算法之字典树实现方法。分享给大家供大家参考,具体如下:class TrieTree(): d
- 前言本文简单总结了一下python中for循环的使用python中for循环一般用来迭代字符串,列表,元组等。当for循环用于迭代时不需要考
- 起步走 #! /usr/bin/python a=2 b=3 c="test" c=a+b print "ex
- 什么是异常?异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理
- 代码如下:--执行顺序 From Where Select select * from (select sal as salary,comm
- 网络I/O模型人多了,就会有问题。web刚出现的时候,光顾的人很少。近年来网络应用规模逐渐扩大,应用的架构也需要随之改变。C10k的问题,让
- 脚本主要功能:1)通过zabbix api接口采集所有监控主机ip地址;2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址、主机名、操
- 比如在学习list、tuple、dict、str、os、sys等模组的时候,利用Python的自带文档可以很快速的全面的学到那些处理的函数。
- 一、如何设置utf8mb4mysql中针对字符串类型,在设置charset的时候可以精确到字段。如果只将某个字段设置utf8mb4,那么其他
- python使用socket创建tcp服务器和客户端。服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复。客户端,等待用户输入
- 我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友
- 表一、运算符与特殊字符 运算符描述/选择子元素,返回左侧元素的直接子元素;如果"/"位于最左侧表示选择根结点的直接子元素
- 语法1.普通[expression for target in iterable]2.带条件[expression for target i