python实战篇(七)---一寸照换背景

你要是愿意,我就永远爱你


你要是不愿意,我就永远相思


——《爱你就像爱生命》

前言:

Python实战篇重在实战,今天,我们就来编写一份用于一寸照换背景的代码 ,最后的成果就是放入一张蓝色背景的一寸照,手动选择替换后的背景为红色或者绿色(其他颜色需要自己适配),然后运行代码,最终在本地生成一张一寸照,效果还不错哦!

一寸照换背景

一、实战简介

    本次实战主要用到了两个python包(opencv,numpy),事先小编为了简便,只设计了蓝色背景转其他背景的代码适配,代码的主要思想是提取当前一寸照图片的hsv,将其设置为蓝色空间范围,然后通过阈值化操作,将大于阈值的像素都转换为目标像素,不是阈值的像素则不处理,Python语法中主要使用了for循环。

二、代码实践+注释

# coding:utf-8
import cv2
import  numpy as np
# opencv读取照片
img=cv2.imread('./002.jpg')
#缩放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)     #原图片路径
rows,cols,channels = img.shape
cv2.imshow('img',img)   # 显示照片
# #转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([90,70,70])                   #里面三个数值可以控制好处理出来的效果和噪点
upper_blue=np.array([110,255,255])
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(erode,None,iterations=1)
cv2.imshow('dilate',dilate)


#遍历替换 该步骤就是最终操作了 遇到背景的像素就替换  
for i in range(rows):
    for j in range(cols):
        if dilate[i,j]==255:
            img[i,j]=(0,0,255)   #此处替换颜色,为BGR通道
cv2.imshow('res',img)

三、效果展示

原图:

效果图:

 

结语:

    今天的代码总体来说不是很难,主要是设计到了opencv读取像素的操作,对于opencv大家可能不太熟悉,后期我们会专门开设opencv数字图像处理的专栏,对图像处理进行好好的安排,今天的一寸照换背景就相当于opencv的实战了,改进的地方还有很多,比如代码中的膨胀腐蚀操作和各种背景互换,因为今天的代码只能蓝色背景换成其他颜色,其他的需要小伙伴们自行实践哦。

编辑:玥怡居士|审核:小圈圈居士

往期精彩回顾

python实战篇(六)---打造自己的签名软件

python实战篇(五)---百度api实现车型识别

python实战篇(四)---Python+OpenCV画动态时钟

长按扫码关注

好文!必须点赞

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值