当前位置:首页 » 《休闲阅读》 » 正文

在 Python 中使用计算机视觉实现哈利波特的隐形斗篷_深度学习与计算机视觉

4 人参与  2022年02月06日 09:10  分类 : 《休闲阅读》  评论

点击全文阅读


介绍

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

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

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

魔术师==编码器

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

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

你需要了解 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:
        break
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

条件是当只有网络摄像头打开时,它才会运行,否则代码不会在没有网络摄像头的情况下运行。

我们必须获取红色布料的值以获取任何值并进行更改,直到红色开始从帧中消失。

第 5 步:设置斗篷和制作蒙版的值

#all this Comes in the while loop
    lower_red = np.array([0,120,70])
    upper_red = np.array([10,255,255]) # values is for red colour Cloth
    mask1 = 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 frame
    mask1 = 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 res1


    res2 = 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」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓


点击全文阅读


本文链接:http://zhangshiyu.com/post/34307.html

布料  项目  斗篷  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1