换证件照背景

证件照换背景

  1. 分割出背景区域的掩膜(将图像转成hsv格式,通过cv2.inrange()选出特定颜色区域的背景)
    背景区域的掩膜:背景是白色,头像部分是黑色的
  2. 对背景区域的掩膜取反,得到反掩膜(外黑里白)
  3. 画出与证件照相同大小的背景
  4. 新背景:新背景与掩膜按位与
  5. 分割头像区域。反掩膜与原图按位与
  6. 目标证件照:新背景与头像区域按位或。
    参考

cv2.inrange(hsv,lower_range,upper_range)
将像素值为lower_range,upper_range之间的像素点置为255,其余的置为0.
参数有三个
第一个参数:hsv指的是原图
第二个参数:lower_range指的是图像中低于这个lower_range的值,图像值变为0
第三个参数:upper_range指的是图像中高于这个upper_range的值,图像值变为0

# coding:utf-8
'''
证件照换背景
'''
import cv2
import numpy as np
img = cv2.imread(r'../temp/shu.jpg')# 图像路径
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# LowerBlue = np.array([100, 100, 50])
#
# UpperBlue = np.array([130, 255, 255])
LowerBlue = np.array([20, 120, 100])#BGR
UpperBlue = np.array([130, 255, 200])
mask = cv2.inRange(hsv, LowerBlue, UpperBlue)# 背景是白,头像是黑
mask_not = cv2.bitwise_not(mask)# 外黑里白
# 画出蓝色背景
print(img.shape)
blank = np.zeros(img.shape,dtype = np.uint8)
color = (218,143,3)# BGR
# color = (255,0,0)
background = cv2.rectangle(blank,(0,0),(425,602),color = color,thickness=-1)# 全蓝矩形背景
background = cv2.bitwise_and(background,background,mask=mask)# 得到蓝色背景,空出头像部分

# 抠出头像
head = cv2.bitwise_and(img,img,mask=mask_not)# 头像是原图,背景是黑
# 合并
combination = cv2.bitwise_or(background,head)
# cv2.imshow('background',background)
# cv2.imshow('head',head)
# cv2.imshow('shu',combination)
cv2.imwrite('./shu.jpeg',combination)
# cv2.imshow('shu',mask)
# k = cv2.waitKey(0)  # 无限等待一个键击,将此键击存在k变量中
# if k == 27:  # 27代表esc,可以查看ascii码表
#     cv2.destroyAllWindows()  # 退出窗口

以下内容来自https://www.cnblogs.com/wangyblzu/p/5710715.html
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model).这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值