《人工智能应用与体验》实训任务书汇 项目1-5 猜拳小达人- 趣味文本_第1页
《人工智能应用与体验》实训任务书汇 项目1-5 猜拳小达人- 趣味文本_第2页
《人工智能应用与体验》实训任务书汇 项目1-5 猜拳小达人- 趣味文本_第3页
《人工智能应用与体验》实训任务书汇 项目1-5 猜拳小达人- 趣味文本_第4页
《人工智能应用与体验》实训任务书汇 项目1-5 猜拳小达人- 趣味文本_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

猜拳小达人一、任务目标知识目标1、了解TensorFlow.js框架2、了解神经网络模型3、了解图像分类技能目标1、能够熟练安装浏览器插件2、具有使用TensorFlow.js框架的能力素质目标1、具有良好的职业道德2、具有持续学习的能力二、任务指南步骤1:插件下载将压缩包下载到本地电脑并解压。步骤2:WebServer插件安装与配置1、首先确认电脑上安装了Chrome浏览器。如没有安装,可以双击安装包ChromeSetup.exe,安装Chrome浏览器。安装完成后打开Chrome,再进行插件安装。2、安装插件方法一:1)打开Chrome,从右上角打开设置,从侧边栏选择扩展程序。2)进入chrome浏览器的扩展程序界面,并将开发者模式打开。3)修改“ofhbbkphhbklhfoeikjpcbhemlocgigb_0.5.2_.crt”文件的拓展名,将其改为“ofhbbkphhbklhfoeikjpcbhemlocgigb_0.5.2_.zip”,具体如下图所示:4)将上图中的zip文件直接拖到扩展程序页面,出现下图所示的插件,即安装完成。方法二:1)按照方法一,将文件扩展名改成zip后,点击zip文件,然后右键选择解压到文件夹中,如下图:2)在扩展程序页面点击“加载已解压的扩展程序”,然后选择解压后的文件夹即可。方法三:从应用商店直接安装插件(注意:使用该方法的前提是:你的电脑可以正常连接谷歌)。1)通过Google搜索找到下图:2)单击“WebServerforChrome”,打开后,选择启动应用,即可。注意:如果在以上安装过程中,插件上显示“错误”,一般不影响任务的正常运行,可以先尝试后续的任务步骤。步骤3:新建本地文件夹在本地电脑中新建一个文件夹,用于存储后续任务的源码,比如D盘TensorFlow_JS。步骤4:插件配置1)打开本地电脑中的WebServer插件。比如下图是win10系统中搜索WebServer应用并打开。2)单击CHOOSEFOLDER,选择步骤3创建的文件夹TensorFlow_JS,另外,Options中的配置可参照下图进行。步骤5:打开浏览器打开Chrome浏览器,并在Chrome中打开下方的URL地址::8887/,即可打开步骤3创建的文件夹。到这里,WebServer插件的安装与配置就完成了。步骤6:源码下载1、下载压缩包“猜拳PK.zip”。2、解压到插件配置的对应目录(TensorFlow_JS目录下)。其中包含了运行猜拳游戏的tensorflow.js脚本代码以及前端html文件。步骤7:源码解读1、retrain.html,在该文件中设计猜拳游戏中出现的按钮、布局等。想要实现网页中的按钮进行实际操作,就需要编写相应的脚本代码来实现,即编写html实际调用的js脚本。在js脚本中我们要实现图像数据的采集、识别模型的训练以及验证。2、webcam.js,该脚本用于调用本机摄像头来捕捉手势图像,构建手势数据集。核心代码如下://用摄像头捕捉的画面来创建图像对应的像素值的张量。constwebcamImage=tf.browser.fromPixels(this.webcamElement);3、rps-dataset.js,该脚本主要有两个函数,一是对不同手势用例添加时的处理,二是将数据类别处理成tenforflowjs能处理的tensor形式。核心代码如下://当某一类手势中添加了一个样本时,通过调用concat并将轴参数设置为0来将新样本连接到现有样本集this.xs=tf.keep(oldX.concat(example,0));//将每一类手势对应的标签(整数)转换为one-hot表示形式tf.tensor1d([this.labels[i]]).toInt(),numClasses)}));4、index.js,该脚本主要用来构建、训练手势识别模型,核心代码如下://模型训练代码示例asyncfunctiontrain(){dataset.ys=null;dataset.encodeLabels(3);//模型结构:两层全连接网络层densemodel=tf.sequential({layers:[tf.layers.flatten({inputShape:mobilenet.outputs[0].shape.slice(1)}),tf.layers.dense({units:100,activation:'relu'}),tf.layers.dense({units:3,activation:'softmax'})]});//设置优化器constoptimizer=tf.train.adam(0.0001);//编译模型pile({optimizer:optimizer,loss:'categoricalCrossentropy'});letloss=0;//使用fit函数开始训练model.fit(dataset.xs,dataset.ys,{epochs:10,callbacks:{onBatchEnd:async(batch,logs)=>{loss=logs.loss.toFixed(5);console.log('LOSS:'+loss);}}});}步骤8:打开网页1、确认插件已开启,同步骤4,搜索本机应用程序,找到WebServeforChrome应用->点击WebServer服务->开始服务。2、检查以上html、js文件在同一文件夹下。3、在Chrome浏览器中打开retrain.html网页,看到摄像头开启提醒,选择“允许”,如下图:步骤9:采集“石头”手势摄像头开启后,我们就可以采集数据了。在页面中可以看到“石头”、“布”、“剪刀”按钮,也就是我们下面要采集这三种手势的图片。  在三个按钮上方,可以看到摄像头实时捕捉的画面。该步骤采集“石头”手势,操作步骤如下:1)握拳,放在摄像头下,确保画面里捕捉到了拳头手势。2)点击“石头”按钮3)确认“石头”按钮下方的“石头用例”次数加14)变换不同角度、不同大小的拳头手势,重复前三步,观察“石头用例”数目,达到50次以上即可。步骤10:采集“布”手势该步骤采集“布”手势,操作步骤如下:1)出布,放在摄像头下,确保画面里捕捉到了布的手势。2)点击“布”按钮3)确认“布”按钮下方的“布用例”次数加14)变换不同角度的布手势,重复前三步,观察“布用例”数目,达到50次以上即可。步骤11:采集“剪刀”手势该步骤采集“剪刀”手势,操作步骤如下:1)比剪刀手势,放在摄像头下,确保画面里捕捉到了剪刀手势。2)点击“剪刀”按钮3)确认“剪刀”按钮下方的“剪刀用例”次数加14)变换不同角度的剪刀手势,重复前三步,观察“剪刀用例”数目,达到50次以上即可。三种手势数据采集完成后,训练集就生成了。在捕捉手势图像时,分别点击“石头”、“布”、“剪刀”按钮,就是给图像打分类标签的过程,即数据标注。确认三种手势都有一定量的数据即可。步骤12:手势识别模型训练点击页面中的“训练神经网络”按钮,开始手势识别模型的训练。查看训练的过程或者进度,可在页面空白处右键,选择“检查”,选择“控制台”选项卡,可看到如下界面:LOSS就是模型训练过程中的损失,随着训练次数的增加,让模型朝着损失越来越小的方向去改进。当网页上方出现如下图所示的弹框,表示模型训练完成。步骤13:进行猜拳PK游戏模型训练完成后,就可以进行猜拳游戏了,在游戏过程中,将会调用训练好的手势识别模型对摄像头下你给出的手势进行识别,然后将识别结果和计算机出的手势进行比较。1)确认摄像头是开启状态2)在摄像头下给出任意一种手势3)点击“开始PK”按钮,进入猜拳游戏状态4)可以看到按钮下方输出了你的手势识别结果、计算机出拳结果及PK结果5)再次点击“开始PK”,可以继续猜拳游戏。在PK环节中摄像头捕捉到你出的手势,然后调用训练好的手势识别模型识别出你出的手势是布、石头或剪刀,此时识别的结果可能不是每次都正确,准确率更多取决于训练数据的好坏与多少。实训内容任务一:安装与配置WebServerforChrome插件。任务二:部署猜拳游戏,并在浏览器中正常运行。任务三:采集剪刀石头布三种手势至少各100张图像。完成手势识别模型的训练。进行至少三组猜拳PK,并保留截图。四、实训环境本项目在个人电脑本地环境中完成。操作系统:Windows系统或MacOSX系统。五、实训评价口罩识别系统一、任务目标知识目标1、了解人工智能的概念2、了解神经网络模型3、了解人工智能应用的实现流程技能目标1、具备图像标注的能力2、具备基于Torch框架实现目标检测模型的训练和预测素质目标1、具有良好的职业道德2、具有持续学习和追求创新的能力二、任务指南步骤1:标注图像数据 1、点击右上方黄色文件夹图标,进入data-sets目录,下载压缩包mask.zip到本地,然后解压,可以看到标注工具labelImage.exe。2、打开图像文件夹  为了便于批量标注,将保存原始图像的文件夹打开,然后逐张图像进行标注即可,具体见下图。开始标注之前,你也可以使用压缩包mask.zip中派Lab提供的人脸图像素材,也可以自己搜集相关图片进行标注。3、图像标注使用“CreateRectBox”,在口罩上画一个矩形框,并填写label为“mask”;4、保存标注文件使用“save”功能生成一个标注结果xml文件,并保存到磁盘目录中,默认是存放在被标注图片的同级目录中后缀为xml的同名文件。点击“NextImage”,就可以打开该文件夹下的下一张图片。步骤2:解压数据资源进入data-sets目录,可以看到压缩包“MaskDetect.zip”,包含了该项目的标注好的图像数据集以及封装好的代码库,使用下面的命令将其解压到当前目录中。!unzip-o-q./data-sets/MaskDetect.zip-d./步骤3:导入相关包该任务实现的源码都封装在“train.py”中,可以使用下面的命令将其导入环境中,在后续的步骤中可以调用它内部的方法。#导入train包,用于神经网络模型训练importtrain#导入yolo包,调用其中的检测方法fromyoloimportYOLOimportcv2fromPILimportImage#导入matplotlib,用于画图显示frommatplotlibimportpyplotasplt步骤4:数据预处理1、处理标注文件在步骤1中,我们标注了一批人脸戴与不戴口罩的数据,标注结果均是xml文件,下面我们要对其做进一步的处理,提取有用信息。调用process_xml方法,配置好图像路径、标注文件的路径、以及结果保存路径即可。2、获取训练数据集、验证数据集#定义图片路径images_path='./face_mask_datasetes/train_mask/images/'#定义标注图片路径annotations_path='./face_mask_datasetes/train_mask/annotations'#定义txt标注文件路径annotations_txt_path='model_data/mask_train.txt'#从train包中调用process_xml()函数对xml文件进行处理cess_xml(images_path,annotations_path,annotations_txt_path)#定义图片路径images_val_path='./face_mask_datasetes/val_mask/images/'#定义标注图片路径annotations_val_path='./face_mask_datasetes/val_mask/annotations'#定义txt标注文件路径annotations_val_txt_path='model_data/mask_val.txt'#从train包中调用process_xml()函数对xml文件进行处理cess_xml(images_val_path,annotations_val_path,annotations_val_txt_path)#从train包中调用process_traindata()函数,#根据以上步骤的文件路径,将数据集划分为训练与测试train_lines,val_lines=cess_traindata(annotations_txt_path,annotations_val_txt_path)步骤5:加载预训练模型由于从头训练一个好模型需要时间较久,我们提前预训练了一个口罩识别模型./model_data/yolov4_maskdetect_weights1.pth,我们可以使用标注的数据在此模型上继续迭代,得到一个效果更好的模型。  调用load_premodel函数,配置好模型路径、类别标签文件路径即可。运行结果中显示“Finished!”加载完成。Cuda=False#不启用Cuda#定义模型文件路径model_path="model_data/yolov4_maskdetect_weights1.pth"#定义模型分类类别classes_path='model_data/mask_classes.txt'#从train包中调用load_premodel()函数进行预训练模型读取model,net,yolo_losses=train.load_premodel(model_path,classes_path,Cuda)步骤6:训练口罩识别模型调用train_model方法,配置好训练集、验证集、迭代次数、学习率、模型结构等参数即可。注:使用cpu环境训练时,把Batch_size设小一点,否则容易报出超出内存的错误。#参数配置lr=1e-3#学习率Batch_size=1#批大小Init_Epoch=0#初始训练批次Freeze_Epoch=2#冻结批次Cosine_lr=True#学习率配置参数#从train包中调用train_model()函数进行模型训练best_model_weights=train.train_model(train_lines,val_lines,model,lr,Init_Epoch,Freeze_Epoch,Batch_size,Cosine_lr,net,yolo_losses,Cuda)步骤7:读取测试图片#定义图片路径image_path='face_mask_datasetes/val_mask/images/songzuer.jpg'#打开图片文件image=Image.open(image_path)步骤8:调用口罩识别模块#实例化YOLOyolo=YOLO()#对yolo调用detect_image()函数,进行口罩识别r_image=yolo.detect_image(image)步骤9:保存并显示检测结果#定义图片保存命名r_image_file=str(image_path).split('.')[0]+'_result.png'#保存图片r_image.save(r_image_file)#读取图片img=cv2.imread(str(r_image_file))#展示图片plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))plt.show()实训内容任务一:图像标注工具的使用任务二:使用labelimage标注至少3张人脸口罩图像任务三:训练口罩识别模型任务四:使用训练好的模型对戴口罩和不带口罩的图像进行检测,并输出结果四、实训环境本项目在个人电脑本地环境中完成。操作系统:Windows系统或MacOSX系统。五、实训评价体育运动的姿态检测一、任务目标知识目标1、了解姿态检测2、了解MediaPipe3、了解人工智能应用的实现流程技能目标1、具备熟练处理图像和视频的能力2、具备熟练使用MediaPipe工具进行姿态检测素质目标1、具有良好的职业道德2、具有持续学习和追求创新的能力二、任务指南步骤1:资料下载步骤1-2,用于体验姿态检测。先下载相关资料;从侧边栏选择文件夹图表,点击文件夹data-sets,下载姿态识别.zip并解压。  步骤2:浏览器配置\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"  chrome浏览器打开:chrome://flags/#unsafely-treat-insecure-origin-as-secure

进行如下图两步设置复制网址进文本框2.点击Disable选项卡,选择Enable步骤3:打开网页\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"  打开WebServer,选择刚刚解压的文件夹。通过WebServer打开index.html,网页加载速度取决于电脑配置,请耐心等待。  

可调参数说明自拍模式:打开则对相机或视频图片输入进行垂直翻转处理。模型复杂度:0,1或2。标记的准确性和计算延迟通常会随着模型的复杂性而增加。默认为1。平滑标点:过滤不同输入图像中的地标以减少抖动。开启画面分割:如果设置为true,除了姿势界标之外,该解决方案还生成分割掩码。平滑分割:过滤不同输入图像的分割掩码以减少抖动。最小姿态检测置信度:人检测模型中的最小置信度值。最小姿态跟踪置信度:跟踪模型的最小置信度值(设置为更高的值可以提高识别的稳定性与准确性,但代价是更高的延迟。)

网页样例视图  如果摄像头拍摄距离有限无法进行全身的拍摄,可以选择下载该小节资源中提供的demo.mp4并在浏览器中进行上传。  注意:每次调整参数都需要再次加载模型。步骤4:解压资源文件并安装MediaPipe步骤4-8是对图片中的运动姿态进行检测。\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"   1、点击页面右侧侧边栏文件夹图标,进入“data-sets”,可以看到压缩包“姿态检测.zip”,包含了该项目的数据集以及封装好的代码库,使用下面的命令将其解压到当前目录中。!unzip-o-q./data-sets/姿态检测.zip-d./安装mediapipe#安装MediaPipe!pipinstallmediapipe步骤5:将模型解压到所需的位置shutil._unpack_zipfile("modules.zip","/opt/conda/lib/python3.9/site-packages/mediapipe")步骤6:导入相关包cv2用来读取图片numpy用来做运算util里面有封装好的函数mediapipe是实现姿态识别所用到的库matplotlib用来查看图片importcv2importnumpyasnpfromutilimport*importmediapipeasmpimportmatplotlib.pyplotaspltimportshutil步骤7:读取待检测对象并显示npack_zipfile("modules.zip",#通过opencv读取图片name="1.png"image=cv2.imread(name)#将opencv读取的BGR图片转换为RGBimage_rgb=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)#展示图片plt.imshow(image_rgb)plt.show()步骤8:调用模型对图像进行姿态检测我们将MediaPipePose的检测过程放入了make_image函数,所以在这里我们使用了MediaPipe并绘制姿态标点。defmake_image(image):""":paramimage:图片return:经过姿态检测并标点的图片"""#进行姿态检测annotated_image=make_image(image)#展示检测完毕的图片plt.imshow(annotated_image)plt.show()步骤9:调用函数计算关节角度步骤9-13是对图片中的深蹲姿势进行检测。根据三个坐标(x1,y1),(x2,y2),(x3,y3),我们如何计算关节角度?调用angle函数进行角度计算,函数说明:调用angle函数进行角度计算,函数说明:angle(point_a,point_b,point_c):根据三点坐标计算夹角,返回角点b的夹角值。#输入三个测试坐标,b点夹角应该是90°c1=[0,1]#[x1,y1]c2=[0,0]#[x2,y2]c3=[1,0]#[x3,y4]#调用angle()进行角度计算angle(c1,c2,c3)步骤10:调用函数给图片添加文字我们通过imread读取图片,然后进行颜色通道转换。接下来通过调用cv2AddChineseText()方法在图片“1.png”的(250,50)的位置上添加文字"添加文字",并设置颜色(0,0,0)即黑色。cv2AddChineseText(img,text,position,textColor=(0,255,0),textSize=30)参数说明如下:img:要处理的图片text:要添加的文字position:文字放置坐标,输入格式:(0,0)textColor:文字颜色,输入格式:(B,G,R),默认为绿色。textSize:字体大小,默认为30。#通过opencv读取图片name="1.png"image=cv2.imread(name)#将opencv读取的BGR图片转换为RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)#指定图片,指定文字,指定字体,指定字体大小,指定颜annotated_image=cv2AddChineseText(image,"添加文字",(250,50),(0,0,0))#展示绘制好的图片plt.imshow(annotated_image)plt.show()步骤11:读取关节坐标计算膝关节弯曲角度需要三个的点的坐标,而调用关节点需要用到关节点的英文名称,我们可以参照以下示意图:23:左髋部,LEFT_HIP24:右髋部,RIGHT_HIP25:左膝盖,LEFT_KNEE26:右膝盖,RIGHT_KNEE27:左脚踝,LEFT_ANKLE28:右脚踝,RIGHT_ANKLE#配置MediaPipe的姿态识别解决方案mp_pose=mp.solutions.pose#使用MediaPipe的姿态识别解决方案withmp_pose.Pose(static_image_mode=True,min_detection_confidence=0.5,model_complexity=2)aspose:#标记姿态结果results=cess(image)#读取图片长宽w,h,_=image.shape#读取所有点的坐标landmarks=results.pose_landmarks.landmark#通过索引读取单个位置的坐标left_23=[int(landmarks[mp_pose.PoseLandmark.LEFT_HIP].x*w),int(landmarks[mp_pose.PoseLandmark.LEFT_HIP].y*h)]print("23:左髋部,LEFT_HIP坐标:",left_23)步骤12:将步骤4、5、6合并到一个函数中除了步骤4、5、6功能的合并之外,我们添加了颜色变化,如果这个深蹲姿势是标准的,有一些更醒目的提示,比如说亮绿色。反之,如果是不标准的,我们可能希望有一些提醒色,比如黄色。defcompute_advanced(annotated_image,results):"""输入:进行过姿态检测的图片与姿态检测结果输出:对膝关节角度进行标点后的图片"""#读取图片长宽image_height,image_width,_=annotated_image.shape#步骤6:生成并打印所需坐标names=["左髋部","左膝盖","左脚踝","右髋部","右膝盖","右脚踝"]#我们将步骤五的坐标读取放进了get_coord()函数coords=get_coord(results,image_width,image_height)foriinrange(6):print(names[i],"坐标:",coords[i])#步骤4:计算两个关节的角度angle_left=angle(coords[0],coords[1],coords[2])angle_right=angle(coords[3],coords[4],coords[5])#步骤5:在图片上添加两个关节的角度ifangle_left<=90:#标准:显示绿色annotated_image=cv2AddChineseText(annotated_image,"左膝弯曲角度:"+str(int(angle_left)),tuple((coords[1][0]-100,coords[1][1]-50)),(0,255,0),40)else:#不标准:显示黄色annotated_image=cv2AddChineseText(annotated_image,"左膝弯曲角度:"+str(int(angle_left)),tuple((coords[1][0]-100,coords[1][1]-50)),(0,255,220),40)ifangle_right<=90:#标准,显示绿色annotated_image=cv2AddChineseText(annotated_image,"右膝弯曲角度:"+str(int(angle_right)),tuple((coords[4][0]-100,coords[4][1]-25)),(0,255,0),40)else:#不标准:显示黄色annotated_image=cv2AddChineseText(annotated_image,"右膝弯曲角度:"+str(int(angle_right)),tuple((coords[4][0]-100,coords[4][1]-25)),(0,255,220),40)returnannotated_image步骤13:对图片中的深蹲姿势进行检测调用make_image_advance函数,它可以输入自定义的一些图像处理函数,并在完成姿态检测后进行处理。make_image_advance函数是从until文件中导入的函数。defmake_image_advance(image,func,**kwargs):参数说明如下:image:图片func:对图片进行操作的函数。该函数输入一张图片和姿态检测的结果kwargs:上述函数的其他输入返回值:经过姿态检测并标点的图片,再根据func对图片进行操作后的图像。  接下来我们进行图片读取,并将上一步骤中的compute_advanced函数输入进make_image_advance()函数,这样就可以在对图像进行姿态检测后,绘制我们自己想加上去的内容,比如膝盖弯曲角度。name="1.png"image=cv2.imread(name)annotated_image=make_image_advance(image,compute_advanced)plt.imshow(annotated_image)plt.show()步骤14:定义函数对视频帧深蹲姿势进行检测步骤14-15开始对视频中的深蹲姿势进行检测,调用make_image_advance函数,它可以输入自定义的一些图像处理函数,并在完成姿态检测后进行处理。make_image_advance函数是从until文件中导入的函数。defmake_image_advance(image,func,**kwargs):参数说明如下:image:图片func:对图片进行操作的函数。该函数输入一张图片和姿态检测的结果kwargs:上述函数的其他输入返回值:经过姿态检测并标点的图片,再根据func对图片进行操作后的图像。  接下来我们进行图片读取,并将上一步骤中的compute_advanced函数输入进make_image_advance()函数,这样就可以在对图像进行姿态检测后,绘制我们自己想加上去的内容,比如膝盖弯曲角度。defcompute_img(image,i):"""img:输入一张图片,当前帧的图片i:输入帧数,当前是第几帧输入:对输入图片按照代码进行处理后的图像"""annotated_image=make_image_advance(image,compute_advanced)returnannotated_image步骤15:对运动视频进行深蹲标准检测调用make_video函数,并将上一步的compute_img函数作为参数传递。make_video函数原型:make_video(videoname,func,**kwargs):参数:paramvideoname:视频名称;paramfunc:处理函数;返回值:经过姿态检测并标点的视频,再根据func对视频进行操作。操作完成后,我们再次通过侧边栏的文件夹处下载out.mp4进行查看,可以看到视频画面中随着人的动作变化,深蹲动作的检测结果也在变化,绿色文字表示动作标准,黄色动作表示还没达到标准状态。make_video("demo.mp4",compute_img)实训内容任务一:姿态检测体验任务二:对图片中的运动姿态进行检测任务三:对图片中的深蹲姿态进行检测任务四:对视频中的深蹲姿态进行检测四、实训环境本项目在个人电脑本地环境中完成。操作系统:Windows系统或MacOSX系统。五、实训评价创意美术体验——基于OpenCV制作苹果橙一、任务目标知识目标1、了解OpenCV2、了解图像拼接与图像金字塔技能目标1、具有使用cv2处理图像的能力2、具有使用图像金字塔进行图像融合的能力素质目标1、具有追

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论