在 Python 中使用计算机视觉实现哈利波特的隐形斗篷
介绍
“当你不是魔术师但仍然可以用一些代码行魔法时”。
大家好 今天我们将通过在我们的代码编辑器中编写代码来实现魔术。
拥有一件哈利波特的隐形斗篷,可以去你想去的任何地方,体验隐形的感觉。
魔术师==编码器
所以,让我们用计算机视觉制作我们自己的隐形斗篷。
注意:所以如果你想做这个项目,在开始这个项目之前你需要知道一些事情。
你需要了解 Python 和 OpenCV 的基础知识,如果你不知道,请不要担心,我们将轻松涵盖所有内容,并且对初学者友好。
如果你想直接查看代码,那么这里是源代码 - https://github.com/puranjay123/Invisible-Cloak-openCV-
现在让我们开始项目,首先你需要选择你的斗篷,选择斗篷有一些条件。
快速浏览我们正在制作的内容:https://youtu.be/54osymwvY_o
斗篷的先决条件
只选择一种颜色的布,假设布的颜色是红色,然后确保你的背景不包含任何红色。因为如果背景包含该颜色,则会导致问题。
在这个项目中,我们使用红色的布,但你可以制作任何颜色,我们只需要更改颜色可见性的值,并且可以轻松更改。
现在选择布料后,我们需要为这个项目选择 IDE 并安装一些库来完成这项工作。
在这个项目中,我们使用 VS 代码来制作这个项目,但是你可以选择任何你想要的IDE,这取决于你。
现在我们需要在我们的设备上安装所有库,以便我们可以开始编码这个项目
我们的系统需要三样东西
Python 3.0.0 或以上版本
OpenCV
Numpy
源代码:https://github.com/puranjay123/Invisible-Cloak-openCV
要安装 OpenCV,请在终端中运行命令
pip install opencv-python
要安装 Numpy,请在终端上运行此命令
pip install numpy
对于为项目编写代码,最好有一个计划或算法,其中包含你计划做的所有事情。
算法:
首先导入我们可以用来制作项目的库。
使用网络摄像头捕捉人物和背景的实时画面。
我们必须捕捉背景,这样如果布料进来,它就会显示背景。
为我们选择的布料设置斗篷的值
制作 2 个蒙版并将它们应用到框架上。
组合蒙版并同时显示
显示最终输出
如果你没有获得算法,请不要担心,我们会慢慢了解它,并且实现起来会容易得多。
那么,现在让我们开始这个项目的实施。
第 1 步:导入库
# Import Libraries
import numpy as np
import cv2
import time
现在我们已经导入了库,我们现在必须在你的设备上使用摄像头才能工作。
因此,为了获取网络摄像头馈送,我们使用了默认网络摄像头使用的 VideoCapture 函数。
第 2 步:使用网络摄像头拍摄视频源
要使用网络摄像头,请输入 0 并用双引号输入视频路径。
cap = cv2.VideoCapture(0)
time.sleep(2)
background = 0
在 time 函数中,我们使用了该值,以便在运行程序后的前 2 秒内可以捕获视频。
第 3 步:捕捉背景
在前两秒内捕获背景图像。
for i in range(50):ret, background = cap.read()
现在捕获视频并将其转换为 HSV 格式。
第 4 步:使用网络摄像头捕获视频源
while(cap.isOpened()): ret, img = cap.read()if not ret:breakhsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
条件是当只有网络摄像头打开时,它才会运行,否则代码不会在没有网络摄像头的情况下运行。
我们必须获取红色布料的值以获取任何值并进行更改,直到红色开始从帧中消失。
第 5 步:设置斗篷和制作蒙版的值
#all this Comes in the while looplower_red = np.array([0,120,70])upper_red = np.array([10,255,255]) # values is for red colour Clothmask1 = cv2.inRange(hsv, lower_red,upper_red)lower_red = np.array([170,120,70])upper_red = np.array([180,255,255])
mask2 = cv2.inRange(hsv,lower_red,upper_red)
#Combining the masks so that It can be viewd as in one framemask1 = mask1 +mask2
#After combining the mask we are storing the value in deafult mask.
现在在第 5 步中发生了很多事情,在这部分中,我们尝试设置布料的值,以便在运行程序时消除这些颜色,就像上面提到的布料是红色的一样,因此我们正在设置这块布的颜色,这样当我们制作蒙版时,它会简单地从屏幕上移除,而不是唯一的颜色,它显示了我们在步骤 3 中捕获的背景。
现在我们必须设置我们选择的布料颜色的值,这里我们选择红色的 RGB 格式,这样你就可以选择任何颜色的布料并更改这些值。
第 6 步:使用形态变换去除布料上的噪音和不必要的细节。
要深入了解形态学操作,你可以参考:https://docs.opencv.org/master/d9/d61/tutorial_py_morphological_ops.html
mask1 = cv2.morphologyEx(mask1,cv2.MORPH_OPEN,np.ones((3,3),np.uint8), iterations = 2)
mask1 = cv2.morphologyEx(mask1, cv2.MORPH_DILATE,np.ones((3,3),np.uint8), iterations = 1)mask2 =cv2.bitwise_not(mask1)
Morhological transfromations - cv2.MORPH_CLOSE简单地删除不需要的不必要的细节,就像在这个项目中噪声是屏幕上出现的小黑洞
cv2.MORPH_OPEN将删除不需要的布料边界上的白色区域。
第 7 步:组合蒙版并在一帧中显示它们
res1 = cv2.bitwise_and(background,background,mask=mask1)
#The basic work of bitwise_and is to combine these background and store it in res1res2 = cv2.bitwise_and(img,img,mask=mask2)final_output = cv2.addWeighted(res1,1,res2,1,0)cv2.imshow('Invisible Cloak',final_output)k = cv2.waitKey(10)if k==27:break
cap.release()
cv2.destroyAllWindows()
# so if user want to quit the program they can press Escape key the 27 is the code for escape key in #ASCII vode values
部署后的项目。
注意:在这个视频中,使用的布料是红色的,但你可以改变颜色的色调。
第 7 步是我们对存储在 res1 中的按位运算进行了操作,该操作用于组合我们制作的蒙版并将其存储在 res1 变量中。
我们使用了用于清晰图像的 cv2.addWeighted。
重要提示:当你尝试运行此功能时,需要2秒钟才能捕获我们在步骤2时间范围内选择的内容背景,所以尽量不要在前2秒内出现在画面中,然后你才可以简单地测试你的项目。
结论:在这个项目中,我们实施了简单的蒙版技术和形态学操作,将彩色布从框架中取出而显示出背景。
GitHub: https://github.com/puranjay123
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓
在 Python 中使用计算机视觉实现哈利波特的隐形斗篷相关推荐
- 想了解Python中用于图像处理的OpenCV基础知识吗?
导语 OpenCV称为开源计算机视觉,是Python中用于计算机视觉和图像处理任务的库. 它有一个模块化的结构,包括几个共享的和静态的库.OpenCV可以应用于Python.C++.Java等语言中. ...
- 下划线在 Python 中的特殊含义
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Python 中的下划线 下划线在 Python 中是有特殊含义的 ...
- 别再用方括号在Python中获取字典的值,试试这个方法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:Pexels 字典是启蒙教育时期,大家不可获取的好帮手 字典 ...
- Python中的数据结构
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:磐创AI 概述 在深入研究数据科学和模型构建之前,Pyt ...
- Python图像处理介绍--Python中的图像表示
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 使用Python进行图像处理是理解如何通过数学和代码表示图片的有趣 ...
- 如何在 Python 中创建一个简单的神经网络
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...
- python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片
我们知道,在使用PhotoShop进行图片的抠取.创建和存储选区.存储图像的色彩资料等复杂操作时,经常会用到一个功能,那就是"RGB"通道,它能从三原色角度对一幅图片进行精准处理. ...
- 教你在Python中构建物体检测系统(附代码、学习资料)
作者:FAIZANSHAIKH 翻译:闫晓雨 校对:张玲 本文约3200字,建议阅读10分钟. 本文介绍物体检测技术以及解决此领域问题的几种不同方法,带你深入研究在Python中如何构建我们自己的对象 ...
- python图片-Python中的十大图像处理工具
原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...
- 如何用OpenCV在Python中实现人脸检测
选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...
最新文章
- 低代码公司黑帕云被字节跳动收购:潮水褪去,曾经爆火的低代码赛道迎来变局?...
- python 脚本查看微信把你删除的好友--win系统版
- mysql默认几个库_MySQL 安装初始化mysql后,默认几个库介绍
- 洛谷P1071 潜伏者 字符串
- 对B样条的理解和整理
- 使用DX 一些知识点整理(随时添加)
- 结对编程项目作业-结对编项目设计文档
- vector can通信源码_汽车电子CAN网络dbc文件
- OpenCASCADE绘制测试线束:几何命令之曲线创建
- 使用.net资源文件时候发生的问题
- Android笔记之平移View
- 答网友问题:职业化代码设计原则讨论
- Tips on rendering interiors
- 请描述osi七层模型,并简要概括各层功能
- UCT树用于四子棋对抗实验
- Linux C 函数指针应用---回调函数
- 现在最好用的或者你喜欢邮件客户端是什么?
- 快速掌握 jQuery 操作 HTML 节点
- oracle扩展归档空间大小,解决Oracle数据库归档日志占满磁盘空间问题
- 用MATLAB给图片打马赛克
热门文章
- matlab补帧,超清还不够,插帧算法让视频顺滑如丝丨NeurIPS 2019
- Flash Player去广告下载地址
- vue使用element-ui打包后与本地测试样式不同问题,改变element-ui原有样式方法
- opencv的dct和scipy.fftpack里dct的区别
- ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately d
- 电脑新建文件夹快捷键
- VS+QT5报错:LNK2019无法解析的外部符号“_declspec(dllimport)public:bool_cdecl QSerialPort“
- 关于股票除权复权,前复权、后复权、不复权
- 一套键鼠控制多台电脑操作——Synergy软件(windows环境)
- 利用Udacity模拟器实现自己的自动驾驶小车