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

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

——《爱你就像爱生命》

前言:

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画动态时钟

长按扫码关注

好文!必须点赞

python实战篇(七)---一寸照换背景相关推荐

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

    十二年来,有笑泪,有阴晴,相伴一场,人来人往,只是日常.--蔡康永 前言 api全称为应用程序接口,说白了就是别人写好了一个可实现功能的函数接口,我们可以直接调用来实现功能,今天,我们一起来学习,用百 ...

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

    为什么上帝看到思考的人会笑?那是因为人在思考,却又抓不住真理.因为人越思考,一个人的思想就越跟另一个人的思想相隔万里. --米兰·昆德拉 Python实战篇重在实战,今天,我们就来设计一款自己的签名软 ...

  3. [知识图谱实战篇] 七.HTML+D3实现关系图谱搜索功能

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  4. 「15」支持向量机Python实战篇——蓝瘦香菇到底有没有毒?

    上一篇文章:「14」支持向量机--我话说完,谁支持?谁反对?,我们通过SVM的数学原理讲解了这个最常见的机器学习算法.这一篇我们用一个非常简单的python实战项目来练习一下SVM并加深理解. 复习 ...

  5. python去除图片复杂背景_3行Python代码实现10秒抠图换背景图的AI神器,根本无需PS...

    人工智能课程大升级,限时优惠仅限前100名​sourl.cn 前言 对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图.不过一些比较复杂的图,有时候还是要画点时间的, ...

  6. 「11」Python实战篇:利用KNN进行电影分类

    上一期文章:「10」民主投票法--KNN的秘密 中,我们剖析了KNN算法的本质和特点.局限.这里我们用python代码进行KNN的实现.第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目 ...

  7. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、

    1.0 封装一个通用的工具栏 目标:封装一个通用的工具栏供大家使用 1.1 通用工具栏的组件结构 在后续的业务开发中,经常会用到一个类似下图的工具栏,作为公共组件,进行一下封装 组件 src/comp ...

  8. 老鱼Python数据分析——篇七:将爬取的数据保存到CSV文件

    使用Python操作CSV文件非常方便,三行代码搞定. 一.向文件中追加数据 import csv# 将数据写入文件 with open("d:\\data.csv", " ...

  9. python:实战篇

    python 实战 §python 实战篇 §1.python解压 1. python解压zip.7z 2. python 解压rar 1)windows: 2)linux: §2.python执行L ...

  10. Vue实战篇三十三:实现新闻的浏览历史

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

最新文章

  1. 用上微软Bosque 困扰程序员30年的问题解决了
  2. proe输入数字时成双出现_天猫双11花呗可提额,支付宝输入几个数字,试试就知道...
  3. Java反编译器Java Decompiler
  4. 数据分割-并查集+set
  5. Jartto: 如何成为一名合格的技术面试官?
  6. freecodecamp_如何充分利用freeCodeCamp
  7. Leetcode重点250题
  8. 《MPLS在Cisco IOS上的配置》一第 1 章 MPLS概述1.1 IP转发过程概述
  9. Python 模块安装失败
  10. 翻译 - 元编程动态方法之public_send
  11. mysql-mmm官方安装指南翻译
  12. 从0开始前端开发_设置DIV内容居中
  13. 为什么visual的联机浏览功能不能用_Minecraft非正版联机教程
  14. 【特纳斯电子】keil uvision5 MDK RM v5.29 (附注册机+视频安装教程)
  15. SPSS基本数据处理(二)
  16. 采用qt技术,开发OFD电子文档阅读器
  17. 网络编程(三):网络中的端口号
  18. 一梦三四年——国产MOBA网游的巅峰
  19. cdr软件百度百科_coreldraw是干嘛的?能做什么?cdr软件在哪儿下载?
  20. 创业故事:挖人的手段

热门文章

  1. snapchat为什么_Snapchat朋友表情符号实际上是什么意思
  2. python抓取word里的拼音_[DIY]给word中的汉字批量加、修改拼音(word全篇加拼音)(旧版VBA程序,缺点比较多)...
  3. 赚大钱的生意都是陌生人生意,熟人生意都是赚小钱
  4. 如何选择适合你的兴趣爱好(十七),吉他
  5. 2022年PYTHON应用行业,PYTHON就业方向
  6. Yang‘s 不等式与 Cauchy-Schwarz 不等式
  7. c语言输入角度求sin,从键盘输入一个角度x,求10sin(x)的值 c语音编程
  8. CPLEX仿真能力可行性分析
  9. 异名一文带你读懂Chrome小恐龙跑酷!
  10. linux数据库能看到系统执行了哪些命令,Linux-Mysql常用命令(上)