介绍

“当你不是魔术师但仍然可以用一些代码行魔法时”。

大家好 今天我们将通过在我们的代码编辑器中编写代码来实现魔术。

拥有一件哈利波特的隐形斗篷,可以去你想去的任何地方,体验隐形的感觉。

魔术师==编码器

所以,让我们用计算机视觉制作我们自己的隐形斗篷。

注意:所以如果你想做这个项目,在开始这个项目之前你需要知道一些事情。

你需要了解 Python 和 OpenCV 的基础知识,如果你不知道,请不要担心,我们将轻松涵盖所有内容,并且对初学者友好。

如果你想直接查看代码,那么这里是源代码 - https://github.com/puranjay123/Invisible-Cloak-openCV-

现在让我们开始项目,首先你需要选择你的斗篷,选择斗篷有一些条件。

快速浏览我们正在制作的内容:https://youtu.be/54osymwvY_o

斗篷的先决条件

  • 只选择一种颜色的布,假设布的颜色是红色,然后确保你的背景不包含任何红色。因为如果背景包含该颜色,则会导致问题。

  • 在这个项目中,我们使用红色的布,但你可以制作任何颜色,我们只需要更改颜色可见性的值,并且可以轻松更改。

现在选择布料后,我们需要为这个项目选择 IDE 并安装一些库来完成这项工作。

在这个项目中,我们使用 VS 代码来制作这个项目,但是你可以选择任何你想要的IDE,这取决于你。

现在我们需要在我们的设备上安装所有库,以便我们可以开始编码这个项目

我们的系统需要三样东西

  1. Python 3.0.0 或以上版本

  2. OpenCV

  3. Numpy

源代码:https://github.com/puranjay123/Invisible-Cloak-openCV

要安装 OpenCV,请在终端中运行命令

pip install opencv-python

要安装 Numpy,请在终端上运行此命令

pip install numpy

对于为项目编写代码,最好有一个计划或算法,其中包含你计划做的所有事情。

算法:

  1. 首先导入我们可以用来制作项目的库。

  2. 使用网络摄像头捕捉人物和背景的实时画面。

  3. 我们必须捕捉背景,这样如果布料进来,它就会显示背景。

  4. 为我们选择的布料设置斗篷的值

  5. 制作 2 个蒙版并将它们应用到框架上。

  6. 组合蒙版并同时显示

  7. 显示最终输出

如果你没有获得算法,请不要担心,我们会慢慢了解它,并且实现起来会容易得多。

那么,现在让我们开始这个项目的实施。

第 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 中使用计算机视觉实现哈利波特的隐形斗篷相关推荐

  1. 想了解Python中用于图像处理的OpenCV基础知识吗?

    导语 OpenCV称为开源计算机视觉,是Python中用于计算机视觉和图像处理任务的库. 它有一个模块化的结构,包括几个共享的和静态的库.OpenCV可以应用于Python.C++.Java等语言中. ...

  2. 下划线在 Python 中的特殊含义

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Python 中的下划线 下划线在 Python 中是有特殊含义的 ...

  3. ​别再用方括号在Python中获取字典的值,试试这个方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:Pexels 字典是启蒙教育时期,大家不可获取的好帮手 字典 ...

  4. Python中的数据结构

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:磐创AI 概述 在深入研究数据科学和模型构建之前,Pyt ...

  5. Python图像处理介绍--Python中的图像表示

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 使用Python进行图像处理是理解如何通过数学和代码表示图片的有趣 ...

  6. 如何在 Python 中创建一个简单的神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...

  7. python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片

    我们知道,在使用PhotoShop进行图片的抠取.创建和存储选区.存储图像的色彩资料等复杂操作时,经常会用到一个功能,那就是"RGB"通道,它能从三原色角度对一幅图片进行精准处理. ...

  8. 教你在Python中构建物体检测系统(附代码、学习资料)

    作者:FAIZANSHAIKH 翻译:闫晓雨 校对:张玲 本文约3200字,建议阅读10分钟. 本文介绍物体检测技术以及解决此领域问题的几种不同方法,带你深入研究在Python中如何构建我们自己的对象 ...

  9. python图片-Python中的十大图像处理工具

    原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...

  10. 如何用OpenCV在Python中实现人脸检测

    选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...

最新文章

  1. 低代码公司黑帕云被字节跳动收购:潮水褪去,曾经爆火的低代码赛道迎来变局?...
  2. python 脚本查看微信把你删除的好友--win系统版
  3. mysql默认几个库_MySQL 安装初始化mysql后,默认几个库介绍
  4. 洛谷P1071 潜伏者 字符串
  5. 对B样条的理解和整理
  6. 使用DX 一些知识点整理(随时添加)
  7. 结对编程项目作业-结对编项目设计文档
  8. vector can通信源码_汽车电子CAN网络dbc文件
  9. OpenCASCADE绘制测试线束:几何命令之曲线创建
  10. 使用.net资源文件时候发生的问题
  11. Android笔记之平移View
  12. 答网友问题:职业化代码设计原则讨论
  13. Tips on rendering interiors
  14. 请描述osi七层模型,并简要概括各层功能
  15. UCT树用于四子棋对抗实验
  16. Linux C 函数指针应用---回调函数
  17. 现在最好用的或者你喜欢邮件客户端是什么?
  18. 快速掌握 jQuery 操作 HTML 节点
  19. oracle扩展归档空间大小,解决Oracle数据库归档日志占满磁盘空间问题
  20. 用MATLAB给图片打马赛克

热门文章

  1. matlab补帧,超清还不够,插帧算法让视频顺滑如丝丨NeurIPS 2019
  2. Flash Player去广告下载地址
  3. vue使用element-ui打包后与本地测试样式不同问题,改变element-ui原有样式方法
  4. opencv的dct和scipy.fftpack里dct的区别
  5. ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately d
  6. 电脑新建文件夹快捷键
  7. VS+QT5报错:LNK2019无法解析的外部符号“_declspec(dllimport)public:bool_cdecl QSerialPort“
  8. 关于股票除权复权,前复权、后复权、不复权
  9. 一套键鼠控制多台电脑操作——Synergy软件(windows环境)
  10. 利用Udacity模拟器实现自己的自动驾驶小车