对于《哈利波特》系列的电影,想必大家都非常的熟悉了,里面各种奇幻的魔法,炫酷的道具让小编我是十分的羡慕啊,小编从小就希望自己能够有一个哈利的神器道具,魔法棒、飞天扫帚、亦或者是隐身衣。

虽然愿望很美好,但是显示却是很骨干。既然现实中无法获得,但是我们可以利用Python来实现梦想,今天小编就带领大家利用来实现一个“隐身衣”的功能。

01.程序的原理

程序实现的原理其实很简单,如下图所示:

上图中左边的图是我们的背景图,所谓的背景图就是图中的黄色区域没有任何目标,只是单纯的背景。而右上角的图中,我们可以看到此时黄色背景区域有了一只啄木鸟的存在,这就是我们的前景图。

那么我们此时为啄木鸟覆盖上红色的外衣,而程序会检测图中的红色目标,将它以背景图所替代,如右下角所示,此时我们可以看到,啄木鸟就完成了隐身的功能。而为啄木鸟覆盖的红色部分就起到了隐身衣的作用。

02.程序讲解

上面小编解释了“隐身衣”的原理,接下来我们来看一下程序是如何实现的吧,首先,小编规定了前景图和背景图,如下所示:

我们的目的就是将背景图的鼠标进行隐身。为了更好的检测视频或者图片中的“红色”物体,需要将图片由BGR格式转化为HSV格式,HSV是图片的一种颜色模型,其中H代表色调,在opencv中,用0到180度来度量,代表我们直观看到的颜色,S表示的是饱和度,表示的是颜色的纯度。而V表示的是亮度,表示的是图片的明暗程度。对于红色的检测,程序如下所示:

上述程序中,红色的色调范围分为两段,分别是0~10度和170~180度两个范围,而饱和度的范围为120~255的范围,亮度的范围为95~255的范围。提取的结果如下图所示:

可以看到,红色物体已经基本提取完毕,但是存在误检测的地方,所以我们利用opencv提供的开运算来处理掉这部分误检测的地方。程序和结果如下图所示:

上述的程序中,我们执行了开运算,也就是先将误检测的白色区域给腐蚀掉,然后再扩充白色的地方。处理之后,我们将黑白的部分颠倒,得到了程序下方的红色检测结果图。

接下来我们就是将上面检测到的红色的部分利用我们的背景图的来融合替换,程序和结果如下图所示:

上图程序中的执行结果分别对应着下图的1到3,可以看到:第一句程序执行后,获得了前景图中红色部分覆盖的图像;

第二句程序执行后,得到的是剔除红色部分后剩余的图片;

第三句程序执行后,是将图片1和图片2的结果进行了融合;

可以看到,融合后的图片3中,木桩上的鼠标“隐身不见了”,这样就达到了给鼠标隐身的目的。

Python里面的视觉效果和图像处理是最有趣了,我们也写过很多好玩的案例,有兴趣的同学可以看一下往期热门,小伙伴还等啥,操练起来。

往期热门系列文章:

Python心得和技巧:

数据分析和爬虫:

更多原创的精彩干货可以去公众号【菜鸟学Python】找我们。目前原创近400个趣味原创案例(Python入门,进阶,经验技巧,爬虫,数据分析,机器学习,面试经验等),欢迎来公众号找我们交流!

反恐精英ol永恒python可以隐身_放个大招!老鸟用Python打造了一款哈利波特的“隐身衣”...相关推荐

  1. Python灰帽子_黑客与逆向工程师的Python编程之道

    收藏自用 链接:Python灰帽子_黑客与逆向工程师的Python编程之道

  2. python 面试问题_值得阅读的30个Python面试问题

    python 面试问题 Interview questions are quite tricky to predict. In most cases, even peoples with great ...

  3. python图像计数_计算机视觉:利用OpenCV和Python进行车辆计数详细步骤

    本教程我将分享几个简单步骤解释如何使用OpenCV进行Python对象计数. 需要安装一些软件: Python 3 OpennCV 1.了解Opencv从摄像头获得视频的Python脚本import ...

  4. python网页版本_利用jupyter网页版本进行python函数查询方式

    我就废话不多说了,还是直接看代码吧! import numpy world_alchol=numpy.genfromtxt("world_alcohol.txt",delimter ...

  5. python老师武_跟着廖雪峰老师学python (5)

    若想技术精进,当然得把基础知识打得牢牢的. 廖雪峰的官方网站  python3教程,该网站提供的教程浅显易懂,还附带了讲学视频,非常适合初学者正规入门. 以下是通过廖雪峰python官方网站学习的个人 ...

  6. python 字节流分段_一文掌握CTF中Python全部考点

    声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! 前 言 一次偶然的机会,让自己 ...

  7. 怎么学python知乎_你们都是怎么学 Python 的?

    自学确实是比较难得,没有一个好的规划,好的学习路线图,你不会知道自己下一步该怎么办. 今天我就帮你来解决,分享2020年黑马程序员Python学习路线图,包含学习路线图,学习视频,学习工具,你都可以找 ...

  8. python 完全面向对象_史上最全的Python面向对象知识点疏理

    原标题:史上最全的Python面向对象知识点疏理 面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例.class 类变量:类变 ...

  9. python新手程序_推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

最新文章

  1. numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array)
  2. 谷歌发布史上最强人类大脑「地图」,1.3亿个突触,在线可视3D神经元「森林」!...
  3. [ExtJS5学习笔记]第十一节 Extjs5MVVM模式下系统登录实例
  4. RedHat linux服务器对外开放指定端口
  5. 基于vuejs的移动端分页代码
  6. Vue-CLI@4——html-webpack-plugin默认配置的获取与修改
  7. python哪本书好看_python入门看哪本书好
  8. nginx负载均衡基于ip_hash的session粘帖
  9. axios async/await
  10. 连接mysql超过连接次数处理办法
  11. 关于STM32F107移植到GD32F307后,固件不断重启的一个解决方式
  12. 交付管理——怎样构建项目团队
  13. Tiktok shop小店注册以及如何一键上传产品批量上货铺货
  14. 箱形图适用于哪种数据_python数据分布型图表箱形图系列带误差线箱形图
  15. Webstorm里面创建XMl文件
  16. 有限覆盖定理证明其他实数完备性定理
  17. 计算机论文指导记录范本,论文指导内容记录怎么写 3篇 论文指导记录20篇
  18. 直接在云端服务器里面修改代码,深夜折腾:实现云端服务器代码与Git库同步
  19. Webpack--模块热替换(HMR)
  20. 初学JavaScript:BOM(浏览器对象模型)介绍

热门文章

  1. 面向地块的NDWI_MEAN阈值分割旱田-水田
  2. 第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动
  3. 共享打印机无响应解决方案
  4. 几个步骤让你学会JAVA的适配器模式
  5. imshow()函数后面如果不加waitKey()函数就不显示
  6. 横河变送器EJA110E
  7. Spire.Presentation(pptx/ppt) for Java 7.12.0
  8. MacOS安装gurobi申请学术证书+激活+python导入
  9. c语言编译时老是1error,C语言笔记1 --新手常常犯的错误
  10. KBP307-ASEMI小扁桥适配小电源整流桥