2021-8-18 07:25:52 [显示全部楼层]
885浏览
查看: 885|回复: 0

[AI人工智能教程] 格物象AI实验——拿铁熊猫实现隐身的斗篷

[复制链接]
什么是格物象平台

格物象平台是一款人工智能课程实践平台。该平台由课程学习,Python编辑器、拿铁熊猫编辑器、学生管理中心四大功能组成。格物象平台能够满足Python基础编程教学、人工智能算法项目实践,人工智能应用项目以及班级资源管理的功能。格物象平台贯通了人工智能算法教学到人工智能软硬件项目实现的全过程。格物象平台与与现行高中信息技术人工智能课程相匹配。在该平台中实现了人工智能算法与开源硬件的结合,让学生不仅能够学习了解到人工智能算法原理,更能够通过拿铁熊猫智能终端部署算法,实现人工智能的应用体验。该平台集数据采集、数据处理、算法应用于一身,体现了人工智能实验的完整环节。

隐身斗篷,顾名思义就是穿上它可以实现隐身的效果。在英国女作家乔安妮·凯瑟琳·罗琳所著的小说《哈利波特》中经常会看到这样一件神奇的道具。本文中我们将通过拿铁熊猫智能终端来模拟实现视频前的隐身效果。本次实验中利用颜色传感器采集检测衣服的颜色(单色),将其变成“隐身衣”,从而实现在视频前,穿上这种颜色的衣服就可以隐身的效果。

01.jpg
02.jpg

1.设计思路
视频是由一帧一帧的图像组成的,视频的“隐身特效”可以理解为对视频的每一帧图像做“隐身特效”,其实就是我们常说的抠图。通常在影视作品中,一般用绿幕抠图,用法很简单,就是用视频特效软件,将图像中的绿色部分抠除,再换上别的特效图片。隐身衣其实就是一张绿色的幕布,将绿布披在身上完成视频拍摄,然后通过视频特效软件将图像中的绿色扣除,再换上背景图,就实现了隐身的效果。

如下所示图A是一张背景,图B是一张需要抠图的图像(需要将绿色部分隐藏),怎么扣除绿色区域得到图C所示的效果呢?

未标题-1 拷贝.jpg

实现思路如下:

步骤一:检测出图 B的绿色幕布,方法是用 HSV 颜色空间得到绿色掩模,得到图 D;
步骤二:将背景中要显示的图像抠出来。方法是用图D与背景图A做掩模运算,得到图E;
步骤三:将图D 按位取反得到的图像与图A进行掩膜运算,得到图F;
步骤四:将图E与图F进行按位或运算,即可得到图C最终效果图。

以上步骤只是完成了对于单幅画面,指定颜色的抠图。如果我们想要实现在任意的背景画面,任意的颜色隐身效果,可增加以下几步操作

步骤六:用摄像头拍下任意背景画面并保存。
步骤七:拾取颜色识别传感器识别到的颜色。
步骤八:视频画面实时抠图,实现隐身。

2.硬件列表
序号
名称
数量
1
拿铁熊猫智能终端
1

3.电路连线

本次电路连线如下图18所示,按钮模块接拿铁熊猫智能终端拓展板D7口,颜色传感器接拓展板上I2C口。

10.png

将摄像头安装到拿铁熊猫智能终端,插好连接线;按钮、颜色识别传感器按电路图与拓展板连线。

11.jpg

准备一根网线,两个USB转以太网接头按下图方式连接。

12.jpg

拿出上述连接线一端与PC端USB口连接,一端与拿铁熊猫智能终端USB口连接。

13.jpg

一端与拿铁熊猫相连另外一端与PC连接

14.jpg

4.程序编写

进入格物象课程平台,在python编辑器模式下输入本次程序,此次程序由三部分组成:分别为拍摄背景图,拾取隐身颜色,视频抠图实现隐身。(部分代码如下)

  1. #记录下H值
  2. hue_value = mapped_h
  3. hue_range = 20
  4. window_name = "invisible cloak"
  5. print("按下按钮退出...")
  6. while True:
  7.     global if_break
  8.     cap = cv2.VideoCapture(0)
  9.     if cap is not None:
  10.         #print("cap is not none, break")
  11.         break
  12. cv2.namedWindow(window_name, cv2.WND_PROP_FULLSCREEN)
  13. cv2.setWindowProperty(window_name, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
  14. if_break = False
  15. whole_frame = np.zeros((480,800,3), dtype="uint8")
  16. while True:
  17.     ret, frame = cap.read()  
  18.     if ret:
  19.         #RGB 三通道
  20.         hsv_mask = get_hsv_mask(frame,hue_value)
  21.         #对掩模取反   
  22.         inv_hsv_mask = cv2.bitwise_not(hsv_mask)
  23.         res = en_invisible(hsv_mask,inv_hsv_mask, frame, background)   
  24.         #res = np.flip(res,axis=1)
  25.         for i in range (3):
  26.             whole_frame[:,80:720,i]=res[:,:,i]
  27.         cv2.imshow(window_name,whole_frame)
  28.     if if_break == True:
  29.         print("退出")
  30.         break
  31.     if cv2.waitKey(1) & 0xFF == ord('q'):
  32.         break
  33. #清空显示
  34. cap.release()
  35. cv2.destroyAllWindows()
复制代码

5. 测试运行

登陆格物象课程平台在“PYTHON 编辑器”界面中,双击打开刚才编辑好“隐身衣”的程序,点击“复制到拿铁熊猫”,等待程序的部署完成后,画面提示“部署完成!”;

15.png


切换到“拿铁熊猫”界面中,找到并打开刚才部署的程序文件。

点击运行第一段拍摄程序,可以看到在运行窗口显示的 PinPong 库信息,同时拿铁熊猫智能终端进入拍摄模式,按下按钮即可拍下当前画面。

16-1.png

16-2.jpg

注释掉拍摄程序中拍摄背景的语句“take_background()”;接着重启内核,(注意:运行 PinPong 库时,每次停止程序后,都要重启内核,否则下一次会无法运行 PinPong 库。)运行后续所有程序,当运行到拾取颜色程序时,将颜色传感器对准蓝色桌布,可以看到运行界面会对应框选出这种颜色,如下图所示。按下按钮,获取当前颜色传感器拾取的颜色作为隐身衣颜色。

17-1.jpg
17-2.png

完成上述操作后,在拿铁熊猫智能终端摄像头前,用蓝色桌布遮挡视频画面中的任意物体,都会被隐身。

在生活中,我们经常会使用Photoshop给图片加上滤镜。通过今天的实验我们知道也可以使用python编程的方式来对图像进行处理,从而达到美化图片的效果。此项目中我们实际上使用了图像识别技术,利用颜色识别传感器去获取隐身衣颜色,利用opencv库去实现了画面的抓取、颜色空间的转换等操作,从而实现了视频隐身的效果。而上述图像处理过程中抠图、掩膜、颜色空间转换都是由后台大量的数据计算来完成,其实这些也是AI在图像研究领域的一个方面。目前AI对图像处理的绝不只是我们上面所学习的这些,更多的应用则是基于深度学习和神经网络算法来实现的作品,例如下图18就是由AI根据风格迁移算法生成的梵高风格的星空图片,希望通过本课的实验能够给大家带来一个启发,能够做出更多优秀的AI作品。

18.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail