AidLux“人像抠图”案例源码详解 (Python)

“人像抠图”案例源码详解 (Python)

seg_gui_meet.py用于人像抠图

  1. 导入基础包作用详解
  2. 构建程序图形化类
  3. 初始化处理函数(人体抠图应用启动时首先被调用)
  4. 程序入口

打开testpose人像姿态检测案例

在VScode中进入代码编辑状态。

在这里插入图片描述

导入相关库

'''seg_gui_meet.py用于examples中的人体抠图'''

'''
导入基础包作用详解
'''
#导入包介绍开始

#cvs包是Aid内置的代替cv2的包,基本上cv2支持的函数cvs一样支持,cvs包在X模式下和非X模式下一样执行
#cvs更多详细介绍查看官网文档OpenCVhttps://www.aidlearning.net/showdoc/web/#/5?page_id=45
from cvs import *

#NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,
#支持大量的维度数组与矩阵运算,
#此外也针对数组运算提供大量的数学函数库。
#在机器学习算法中大部分都是调用Numpy库来完成基础数值计算的。
import numpy as np

# tflite_gpu,GPU加速代码由AID提供,TensorFlow Lite 支持多种硬件加速器。GPU 是设计用来完成高吞吐量的大规模并行工作的。
# 因此,它们非常适合用在包含大量运算符的神经网络上,一些输入张量可以容易的被划分为更小的工作负载且可以同时执行,通常这会导致更低的延迟。
# 在最佳情况下,用 GPU 在实时应用程序上做推理运算已经可以运行的足够快,而这在以前是不可能的
import tflite_gpu
#导入包介绍结束
##############################################################################

tflite=tflite_gpu.tflite()
back_img_path=('res/dock_vbig.jpeg','res/taj_vbig.jpg','res/sunset_vbig.jpg','res/test.jpg','res/bg1.jpg','res/bg2.jpg','res/bg3.jpg','res/bg4.jpg')

bgnd_mat=cv2.imread('res/dock_vbig.jpeg')
mod=0


构建程序图形化类

'''
MyApp类用于构建程序的图形化
'''  
class MyApp(App):
    #初始化函数,self表示创建实例本身, *args传递可变参数,__init__()的第一个参数永远是self
    def __init__(self, *args):
        #这是对继承自父类的属性进行初始化。而且是用父类的初始化方法来初始化继承的属性。
        #也就是说,子类继承了父类的所有属性和方法,父类属性自然会用父类方法来进行初始化。
        #super() 函数是用于调用父类(超类)的一个方法。
        #super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,
        #但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
        #MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表
        super(MyApp, self).__init__(*args)
    
    def idle(self):
        #在每次更新循环中idle函数都会被调用
        self.aidcam.update()
        
    def main(self):
        #创建一个VBox容器,使用垂直方式(还有HBox水平盒子,以及widget)
        #定义变量main_container,它是整个图形界面的主框架,用于包含其他APP中的控件,相当于容器
        #gui.VBox这段代码是在手机上画出一个宽度为360px,高度为680px的程序主框架范围。
        #style是它的样式,margin:0 auto;相当于margin:0 auto 0 auto;即上下是0,左右是自动。
        #这时main_container中的元素会水平居中
        main_container = VBox(width=360, height=680, style={
   'margin':'0px auto'})
        main_container.css_width = "98%"

        #添加摄像头控件
        #OpencvVideoWidget函数是在手机 画一个用于显示调用手机摄像头拍摄图像的框,宽度350px,高度400px,
        #将它赋值给self.aidcam,aidcam表示摄像头控件。
        self.aidcam = OpencvVideoWidget(self, width=350, height=400)
        #设置main_container的宽度为手机屏幕的宽度的98%
        self.aidcam.css_width = "98%"
        self.aidcam.style['margin'] = '10px'
        #给aidcam控件一个标记
        self.aidcam.identifier="myimage_receiver"
        main_container.append(self.aidcam)
        
        self.lbl = Label('点击图片选择你喜欢的虚拟背景:')
        main_container.append(self.lbl)
        
        #创建一个HBox容器,使用水平方式
        #定义变量m_container,用于包含图.宽度为360px,高度为130px
        #style是它的样式,margin:0 auto;相当于margin:0 auto 0 auto;即上下是0,左右是自动。
        #这时m_container中的元素会水平居中
        m_container = HBox(width=360, height=130, style={
   'margin':'0px auto'})
        m_container.css_width = "98%"
        self.img11 = Image('/res:'+os.getcwd()+'/'+back_img_path[4],
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值