应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

OpenPose实现抖音很火的人体骨架和视频动态舞

  1说明
  1。1OpenPose是基于卷积神经网络和监督学习并以caffe为框架写成的开源库。
  1。2可以实现人的面部表情、躯干和四肢甚至手指的跟踪,适用多人且具有较好的鲁棒性。
  1。3是世界上第一个基于深度学习的实时多人二维姿态估计,为机器理解人类提供了一个高质量的信息维度。
  1。4代码来源:https:github。comspmallicklearnopencv
  2效果图
  2。1图片
  2。2视频
  视频节选
  3准备
  3。1对源代码进行修改、注释、运行,提高可读性和可操作性,适合小白,入门秒懂。
  3。2环境:python3。8opencv4。4。0深度deepinlinux操作系统。
  3。3模型下载地址,官网也有太慢了。网友提供,谢谢https:blog。csdn。netGLaarticledetails81661821
  3。4文档结构
  说明是自己单独的,output。avi是视频生成的效果图
  4图片人体骨架
  4。1代码:OpenPoseImage。py打开终端输入:本机python3。8OpenPoseImage。pydevicecpuimagefilesingle。jpeg第1步:导入模块importcv2importtimeimportnumpyasnpimportargparse终端参数设置parserargparse。ArgumentParser(descriptionRunkeypointdetection)启动cpu运行parser。addargument(device,defaultcpu,helpDevicetoinferenceon)parser。addargument(imagefile,defaultsingle。jpeg,helpInputimage)argsparser。parseargs()第3步:模型设置模型下载地址:https:blog。csdn。netGLaarticledetails81661821国内的,快模型判定MODECOCOifMODEisCOCO:ifMODECOCO:当前目录下的文件夹protoFileposecocoposedeploylinevec。prototxt或者直接下载,太慢了,文件很大http:posefs1。perception。cs。cmu。eduOpenPosemodelsposecocoposeiter440000。caffemodelweightsFileposecocoposeiter440000。caffemodel缺少nPoints18POSEPAIRS〔〔1,0〕,〔1,2〕,〔1,5〕,〔2,3〕,〔3,4〕,〔5,6〕,〔6,7〕,〔1,8〕,〔8,9〕,〔9,10〕,〔1,11〕,〔11,12〕,〔12,13〕,〔0,14〕,〔0,15〕,〔14,16〕,〔15,17〕〕附加elifMODEisMPI:elifMODEMPI:protoFileposempiposedeploylinevecfaster4stages。prototxt或者直接下载,太慢了,文件很大http:posefs1。perception。cs。cmu。eduOpenPosemodelsposempiposeiter160000。caffemodelweightsFileposempiposeiter160000。caffemodel缺少nPoints15POSEPAIRS〔〔0,1〕,〔1,2〕,〔2,3〕,〔3,4〕,〔1,5〕,〔5,6〕,〔6,7〕,〔1,14〕,〔14,8〕,〔8,9〕,〔9,10〕,〔14,11〕,〔11,12〕,〔12,13〕〕第4步:opencv读取图片framecv2。imread(args。imagefile)frameCopynp。copy(frame)frameWidthframe。shape〔1〕frameHeightframe。shape〔0〕threshold0。1第5步:模型读取和深度学习设置骨架和骨架点读取模型netcv2。dnn。readNetFromCaffe(protoFile,weightsFile)默认启动cpuifargs。devicecpu:net。setPreferableBackend(cv2。dnn。DNNTARGETCPU)print(UsingCPUdevice)附加设置,启动GPUelifargs。devicegpu:net。setPreferableBackend(cv2。dnn。DNNBACKENDCUDA)net。setPreferableTarget(cv2。dnn。DNNTARGETCUDA)print(UsingGPUdevice)时间设置ttime。time()inputimagedimensionsforthenetworkinWidth368inHeight368inpBlobcv2。dnn。blobFromImage(frame,1。0255,(inWidth,inHeight),(0,0,0),swapRBFalse,cropFalse)net。setInput(inpBlob)outputnet。forward()print(timetakenbynetwork:{:。3f}。format(time。time()t))Houtput。shape〔2〕Woutput。shape〔3〕骨架点Emptylisttostorethedetectedkeypointspoints〔〕foriinrange(nPoints):confidencemapofcorrespondingbodyspart。probMapoutput〔0,i,:,:〕FindglobalmaximaoftheprobMap。minVal,prob,minLoc,pointcv2。minMaxLoc(probMap)Scalethepointtofitontheoriginalimagex(frameWidthpoint〔0〕)Wy(frameHeightpoint〔1〕)Hifprobthreshold:cv2。circle(frameCopy,(int(x),int(y)),8,(0,255,255),thickness1,lineTypecv2。FILLED)cv2。putText(frameCopy,{}。format(i),(int(x),int(y)),cv2。FONTHERSHEYSIMPLEX,1,(0,0,255),2,lineTypecv2。LINEAA)Addthepointtothelistiftheprobabilityisgreaterthanthethresholdpoints。append((int(x),int(y)))else:points。append(None)骨架DrawSkeleton,画骨架forpairinPOSEPAIRS:partApair〔0〕partBpair〔1〕ifpoints〔partA〕andpoints〔partB〕:cv2。line(frame,points〔partA〕,points〔partB〕,(0,255,255),2)cv2。circle(frame,points〔partA〕,8,(0,0,255),thickness1,lineTypecv2。FILLED)显示生成图片cv2。imshow(OutputKeypoints,frameCopy)cv2。imshow(OutputSkeleton,frame)输出生成图片cv2。imwrite(OutputKeypoints。jpg,frameCopy)cv2。imwrite(OutputSkeleton。jpg,frame)print(Totaltimetaken:{:。3f}。format(time。time()t))cv2。waitKey(0)
  4。2操作和效果图
  5视频骨架测试
  5。1代码OpenPoseVideo。py:打开终端,需要一定的时间python3。8OpenPoseVideo。pydevicecpuvideofilesamplevideo。mp4importcv2importtimeimportnumpyasnpimportargparseparserargparse。ArgumentParser(descriptionRunkeypointdetection)parser。addargument(device,defaultcpu,helpDevicetoinferenceon)parser。addargument(videofile,defaultsamplevideo。mp4,helpInputVideo)argsparser。parseargs()MODEMPI注意源代码是is,python3改为ifMODEisCOCO:ifMODECOCO:protoFileposecocoposedeploylinevec。prototxtweightsFileposecocoposeiter440000。caffemodelnPoints18POSEPAIRS〔〔1,0〕,〔1,2〕,〔1,5〕,〔2,3〕,〔3,4〕,〔5,6〕,〔6,7〕,〔1,8〕,〔8,9〕,〔9,10〕,〔1,11〕,〔11,12〕,〔12,13〕,〔0,14〕,〔0,15〕,〔14,16〕,〔15,17〕〕elifMODEisMPI:elifMODEMPI:protoFileposempiposedeploylinevecfaster4stages。prototxtweightsFileposempiposeiter160000。caffemodelnPoints15POSEPAIRS〔〔0,1〕,〔1,2〕,〔2,3〕,〔3,4〕,〔1,5〕,〔5,6〕,〔6,7〕,〔1,14〕,〔14,8〕,〔8,9〕,〔9,10〕,〔14,11〕,〔11,12〕,〔12,13〕〕inWidth368inHeight368threshold0。1inputsourceargs。videofilecapcv2。VideoCapture(inputsource)hasFrame,framecap。read()生成本目录下的视频vidwritercv2。VideoWriter(output。avi,cv2。VideoWriterfourcc(M,J,P,G),10,(frame。shape〔1〕,frame。shape〔0〕))netcv2。dnn。readNetFromCaffe(protoFile,weightsFile)ifargs。devicecpu:net。setPreferableBackend(cv2。dnn。DNNTARGETCPU)print(UsingCPUdevice)elifargs。devicegpu:net。setPreferableBackend(cv2。dnn。DNNBACKENDCUDA)net。setPreferableTarget(cv2。dnn。DNNTARGETCUDA)print(UsingGPUdevice)whilecv2。waitKey(1)0:ttime。time()hasFrame,framecap。read()frameCopynp。copy(frame)ifnothasFrame:cv2。waitKey()breakframeWidthframe。shape〔1〕frameHeightframe。shape〔0〕inpBlobcv2。dnn。blobFromImage(frame,1。0255,(inWidth,inHeight),(0,0,0),swapRBFalse,cropFalse)net。setInput(inpBlob)outputnet。forward()Houtput。shape〔2〕Woutput。shape〔3〕Emptylisttostorethedetectedkeypointspoints〔〕foriinrange(nPoints):confidencemapofcorrespondingbodyspart。probMapoutput〔0,i,:,:〕FindglobalmaximaoftheprobMap。minVal,prob,minLoc,pointcv2。minMaxLoc(probMap)Scalethepointtofitontheoriginalimagex(frameWidthpoint〔0〕)Wy(frameHeightpoint〔1〕)Hifprobthreshold:cv2。circle(frameCopy,(int(x),int(y)),8,(0,255,255),thickness1,lineTypecv2。FILLED)cv2。putText(frameCopy,{}。format(i),(int(x),int(y)),cv2。FONTHERSHEYSIMPLEX,1,(0,0,255),2,lineTypecv2。LINEAA)Addthepointtothelistiftheprobabilityisgreaterthanthethresholdpoints。append((int(x),int(y)))else:points。append(None)DrawSkeletonforpairinPOSEPAIRS:partApair〔0〕partBpair〔1〕ifpoints〔partA〕andpoints〔partB〕:cv2。line(frame,points〔partA〕,points〔partB〕,(0,255,255),3,lineTypecv2。LINEAA)cv2。circle(frame,points〔partA〕,8,(0,0,255),thickness1,lineTypecv2。FILLED)cv2。circle(frame,points〔partB〕,8,(0,0,255),thickness1,lineTypecv2。FILLED)cv2。putText(frame,timetaken{:。2f}sec。format(time。time()t),(50,50),cv2。FONTHERSHEYCOMPLEX,。8,(255,50,0),2,lineTypecv2。LINEAA)cv2。imshow(OutputSkeleton,frame)vidwriter。write(frame)vidwriter。release()
  5。2因为需要一定的时间,过程省略,效果图如文章开头。

数码软件产品教程滴滴怎么打出租车快车怎么切换出租车我们不论是在使用数码产品也好,还是在使用APP软件也好,很多时候其实我们都无法真正的将这些APP及数码产品设备的功能完完全全的用明白,也无法用全,因为很多功能是我们不知道的,所……绘图写景的地名诗(五)奇趣诗连载115陈振桂教授出版《起名八十八法》《中传统文化概览》《当代儿童文学》等100本著作,其中大学教材10本。再举一些地名诗让大家欣赏:1。中华颂黑龙江畔吉林挺,新疆内……互联网战士发现法拉利F40与萨达姆侯赛因的连接互联网已经一次又一次地证明,它是我们能够使用的最强大的工具之一。当试图找到一辆法拉利F40时,它当然派上了用场,这辆车之前是臭名昭著的领导人萨达姆侯赛因的儿子拥有的。世界各地的……珍惜当下,父母才不是负担记得谈恋爱的时候,总是会和对象抱怨,说我爸妈对我太好了,让我喘不过气来,每次上班都会说你穿这么点不冷啊,吃水果都会洗好送到我手里来,衣服鞋子从来不让我洗,喝水都会提醒我喝,毕竟……从小培养孩子的自主选择能力(下)(点击头像可查看从小培养孩子的自主选择能力(上))要明白为什么让孩子选择在孩子还是婴儿时,他们完全依靠大人去满足自己的需要,当他们慢慢有了自我意识,说出不的时候,说……特斯拉的CEO埃隆马斯克表示预计将在今年12月中旬推送改进后文章来源:科技讯据国外媒体报道电动汽车制造商特斯拉的CEO埃隆middot;马斯克(ElonMusk)表示预计将在今年12月中旬推送改进后的Autopilot(自动辅助驾……哈哈哈,靠这3招,我终于不用陪娃写!作!业!惹我要上头条聪明孩子养成记我家女儿快读4年级了,写作业完全不用陪,学习也不错。就在前几天,闺蜜特意来问我,说她儿子下半年就要上一年级了,她很焦虑,身边的朋友都帮孩子报了幼小……从全网心疼到全网抵制,演员林生斌到底做错了什么?写林生斌的文章已经很多了,网友们基本也是一边倒,都觉得林生斌骗了所有人。并且,这种骗不像金钱上那样赤裸裸,而是把网友当傻子玩。他这样做,网友们自然不会放过他,让他深……苹果AppleWatchSE或明年问世配S6处理器价格适中根据推特上Komiya的爆料,苹果公司可能正准备推出一款AppleWatchSE,该产品将具有成本更低的部件和略微过时的设计,但仍有不错的软件体验和与iPhone等其他设备集成……蝴蝶眨几次眼睛,才学会飞行?这几天,弟弟觉得哪儿都不对劲,让他说,也说不出什么来,就算洗了澡,也觉得浑身刺挠,闷闷不乐地抓一抓。其实,真实的原因妈妈也说过:暑假了,小孩子不能出去玩,前一阵子是因为大雨,这……研究公司将RiotGames列为美国顶级中型企业研究公司GreatPlaceToWork已将传奇联盟开发者RiotGames评为美国第三大中型企业。位于加州圣莫尼卡的RiotGames是唯一被列入中等规模名单的游戏开发商。……特斯拉最快明年一季度向欧洲消费者交付ModelY由柏林超级工文章来源:科技讯10月28日据国外媒体报道特斯拉去年3月份推出的跨界运动型多用途电动汽车ModelY在今年一季度已开始向北美消费者交付欧洲等市场的交付事宜也在推进中……
中考757分,8门满分的学霸,为何反而受到质疑,只因为寒门这这段时间,江苏淮安的中考学霸张学妍非常火。这位学霸在今年中考中,考出了757分的成绩,距离满分只有13分的距离,且有8门科目获得了满分。毫无疑问这是一个非常难以超越的分数……考研很辛苦的四个专业,上岸难度不小,但考上后身价倍增从就业角度来看,学历越高优势越大,如今本科学历在社会上已经没有那么吃香,这几年考研人数持续上升,而不同专业上岸率不一样,辛苦程度也不一样。一些专业不仅考研特别辛苦,参加专……涂磊言传身教网友惹高赞你真的不能吼骂孩子啦作者:心若想飞因疫情缘故,著名主持人涂磊宅在家频繁晒出和女儿的日常生活。其中有一个视频,涂磊耐心的给女儿樱桃扎辫子。爸爸我想出去玩。涂磊没有直接拒绝,而……辟谣父母之间的摩擦会影响孩子长高吗?父母如何调整好思维、认知、心理状态和夫妻关系思维和认知方面,也是孩子健康成长的一个重要因素。心理学家反复强调,由于思维认知的不同导致的焦虑情绪,会影响到孩子的生长激素的分……中国制造成海外明星光明园迪儿童学习桌椅畅销乌克兰周日,本应是休息的时间,光明园迪三厂的员工却早早将一批儿童学习桌椅整齐的排放在提货区,等待装送进集装箱。光明园迪的工作人员在紧张忙碌的同时,也在进行视频直播,对着手机镜头介绍各……许多女性在穿牛仔裤的时候,容易犯下的7个错误牛仔裤是在1871年由李维斯发明出来的,起初虽然被作为矿工的专用服装而存在,但随着发展,它如今已经成为人们生活中非常常见的服装了。而且牛仔衣裤的款式非常多样,大多数人的衣柜里都……WOW!!原来书还可以这么看Q妈我曾经欢天喜地攒了个玩搭子,目标是撸遍上海各大博物馆、动物园、植物园。。体验结果是:玩搭子太恐怖。自然博物馆里,玩搭子对各种恐龙知识讲得头头是道;植物园里,他对各类植……分享一款青蒜炒腊肉,简单易烹饪,咸香又解馋,孩子爱吃的菜肴大家好,这里是杨爸的育儿经,主题介绍简单的育儿辅食和育儿知识,只为分享对孩子更好的。本款美食适合3周岁以上的孩子品尝。在我们的日常生活中,相信很多家常菜总能勾起孩子……女儿上大学,800元生活费被父母炫耀,这种假节俭坑娃不浅这个时代,家家户户都供应得起大学生了,但生活费却成了让父母头疼的问题,不但要根据家庭条件,还要看地域的差异,给少了,孩子不高兴,给多了,又怕孩子养成乱花钱的毛病,到底给多少合适……烧完的蚊香灰别倒掉,太值钱了,这3大妙用,能帮你省不少钱摘要:现在夏天最炎热的时候就要来了,家家户户都点上蚊香来驱蚊了,很多家庭都在用这种盘装的蚊香,一片刚好可以用一晚,非常方便。烧完的蚊香灰你都倒掉了吗?那就太可惜了,其实蚊香灰还……03岁宝宝体检全攻略注意事项宝宝体检需要注意什么?有些疾病在宝宝婴幼儿时期就已经出现萌芽,体检有助于及时发现潜在的威胁,并采取相关措施以降低这些疾病会宝宝的不良影响。因此,专家提议,宝宝在三岁之前应该一年至少做两次体检。对于体……女人说我想你了,男人的回复方式体现了情商的高低在两性相处中,爱从来都不是赤裸裸的直白。而是一种语言挑动。曾经我有收听一个电台节目讲述,男人想和和女人在一起,一个男的直接说,我想睡你;而另一个男人则说,我想每天醒来和你一起看……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网