介绍

the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.(在一张图片上对人体、手部、面部、足部关节点检测的首个实时多人系统)

下载代码

去Github去clone:https://github.com/CMU-Perceptual-Computing-Lab/openpose

安装CMake

下载:Download | CMake

下载好后默认安装即可,然后添加环境变量

下载pybind11(下载Zip包即可)

GitHub - pybind/pybind11 at 085a29436a8c472caaaf7157aa644b571079bcaa

下载完成后放入openpose的3rdparty\pybind11文件夹下

下载Caffe(下载Zip包即可)

​​​​​​https://github.com/CMU-Perceptual-Computing-Lab/caffe/tree/b5ede488952e40861e84e51a9f9fd8fe2395cc8a

下载完成后放入openpose的3rdparty\caffe文件夹下

安装Cuda

CUDA Toolkit 11.7 Downloads | NVIDIA Developer

默认安装即可

下载Cudnn

cuDNN Archive | NVIDIA Developer

先去到这个地址,然后复制下载链接到迅雷下载即可,因为直接点链接下载经常加载不进去页面(此外,还需要用邮箱注册一下)

解压后有三个文件夹binincludelib,依次将三个文件夹中的内容拷贝到cuda的安装目录(默认情况下是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2)下的binincludelib下,这个要一一对应,如下图所示。

找到Visual Studio Installer, 点击修改

选择单个组件,搜索Cmake,勾选并点击修改

搜索Windows 10 SDK勾选

编译openpose代码

在openpose文件夹下新建build文件夹

配置路径,第一个框是openpose源码的文件夹,第二个框里填的是生成路径

然后点击Configure,选择VS2022,然后Finish

然后打开Build Python,然后点击Configure

然后点击Generate

然后点击open Project,在VS中打开编译好的项目

然后鼠标右键 OpenposeDemo选择生成

生成完成

我们可以看到,最后生成的exe文件

右键OpenPoseDemo,选择设为启动项目

 然后运行,点击本地Windwos调试器,这时就会调用摄像头实时地识别人体关节点了

如果想使用某个视频文件来运行OpenPoseDemo,可以在visual studio中增加命令行参数,方法是右键打开解决方案中的OpenPoseDemo,选择属性

选择调试,然后在命令参数输入:

--video C:\Users\hzkdediannao\Desktop\python\openpose\test.mp4 (这是视频保存的位置)

然后再次运行即可

运行时遇到的问题:

- Failed to parse NetParameter file: models\pose/body_25/pose_iter_584000.caffemodel
0x00007FF9F320286E (ucrtbase.dll) (OpenPoseDemo.exe 中)处有未经处理的异常: 请求了严重的程序退出。

编译遇到这个错误大概率是model没有下载全,去models目录下运行getModels.bat

然后我们尝试使用python调用

右键pyopenpose点击生成

然后将x64/Release下文件和python/openpose/Release下文件拷贝到bin目录下

然后把openpose下地models目录拷贝到bin目录下

然后在bin目录下新建一个data文件夹,来保存需要识别地图片或视频

然后我们先在cmd调用一下

然后我们在bin目录下打开Jupyter Notebook

然后新建一个ipynb文件,参考examples/tutorial_python/body_form_image.py下代码进行自定义编程

import pyopenpose as op
import matplotlib.pyplot as plt
import cv2# Custom Params (refer to include/openpose/flags.hpp for more parameters)
params = dict()
params["model_folder"] = "./models/"# Starting OpenPose
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()# Process Image
datum = op.Datum()
imageToProcess = cv2.imread('data/test2.jpg')
imageToProcess = cv2.cvtColor(imageToProcess,cv2.COLOR_RGB2BGR)
plt.imshow(imageToProcess)datum.cvInputData = imageToProcess
opWrapper.emplaceAndPop(op.VectorDatum([datum]))# Display Image
print("Body keypoints: \n" + str(datum.poseKeypoints)) #X\Y\C(置信度)plt.imshow(datum.cvOutputData)

可以看到有10个点

在图片中正好也有10个点

对面部和手部的识别

查看命令参数:OpenPoseDemo --help

常用参数举例:

--net_resolution 320*176:是指定分辨率

--face:显示面部关键点

--hand:显示手部关键点

--image_dir examples\media\test.jpg:指定图片位置

--video examples\media\test.mp4:指定视频位置

更多参数解释

-3d(运行OpenPose 3d重建演示:1)从立体相机系统读取。2) 从多个视图执行三维重建。3) 显示三维重建结果。请注意,它将仅显示1人。如果有多人在场,它将失败。)类型:bool默认值:false
-3d_min_views(重建每个关键点所需的最小视图数。默认情况下(-1),需要最多(2个,最小(4个,#摄像头-1))摄像头才能看到关键点以重建它。)int32:default类型:-1
-3d_views(用于“--image_dir”或“--video”的补充选项。OpenPose将在每次迭代中读取尽可能多的图像,允许执行立体相机处理(“--3d”)等任务。请注意,必须设置“--camera_parameter_path”。OpenPose必须在参数文件夹中找到与此数字相同数量的“xml”文件。)类型:int32默认值:-1
-alpha_heatmap(热图和原始帧之间的混合因子(范围0-1))。1只显示热图,0只显示边框。仅对GPU渲染有效。)类型:双默认值:0.69999999996
-alpha_pose(混合因子(范围0-1)。1将完全显示它,0将隐藏它。仅对GPU渲染有效。)类型:双默认值:0.59999999998
-body(选择0禁用身体关键点检测(例如,用于更快但更不准确的人脸关键点检测、自定义手部检测器等),选择1(默认)用于身体关键点估计,选择2禁用其内部身体姿势估计网络,但仍运行贪婪关联解析算法)类型:int32默认值:1
-caffemodel_path(组合“--model_文件夹”+--caffemodel_路径”代表caffemodel文件的整个路径。如果为空,则将使用默认的OpenPose caffemodel文件。)类型:字符串默认值:“
-camera(cv::VideoCapture的摄像头索引。范围[0,9]内的整数)。选择负数(默认情况下),自动检测并打开第一个可用的摄像头。)类型:int32默认值:-1
-camera_parameter_path(带有摄像头参数所在文件夹的字符串。如果只有一个XML文件(用于同一摄像头的单个视频、网络摄像头或图像),则必须指定整个XML文件路径(以.XML结尾)类型:字符串默认值:“models/cameraParameters/flir/”
-camera_resolution(设置摄像头分辨率(无论是“--camera”还是“--flir\u camera”)`-1x-1`将使用默认的1280x720表示“--camera”,或使用可用于“--flir_camera”的最大flir摄像机分辨率。类型:字符串默认值:“-1x-1”
-cli_verbose(如果为-1,将禁用它(默认)。如果它是一个正整数,它将在命令行中每隔“verbose”帧打印一次。如果数字在(0,1)范围内,它将每隔“verbose”乘以总帧数打印一次进度。)类型:双默认值:-1
-disable_blending(如果启用,它将在黑色背景上渲染结果(关键点骨架或热图),而不是渲染到原始图像中。相关:'part_to_show'、'alpha_pose'、和'alpha_pose')类型:bool默认值:false
-disable_multi_thread(它将略微降低帧速率,以大大减少延迟。主要用于1)需要低延迟的情况(例如,在使用低范围GPU设备的实时场景中使用网络摄像头);2)在OpenPose崩溃时调试OpenPose以定位错误。)类型:bool默认值:false
-display(显示模式:-1表示自动选择;0表示不显示(如果没有X服务器,则有用;如果不需要视觉输出,则略微加快处理速度);2个用于二维显示;3用于三维显示(如果启用了“---3d”;1个用于二维和三维显示。)类型:int32默认值:-1
-face(启用面部关键点检测。它将共享身体姿势的一些参数,例如“model_folder”。请注意,这将大大降低性能并增加所需的GPU内存。此外,图像上的人数越多,打开姿势的速度越慢。)类型:bool默认值:false
-face_alpha_heatmap(类似于'alpha_heatmap',但适用于face。)类型:双默认值:0.69999999996
-face_alpha_pose(类似于'alpha_pose',但适用于面部。)类型:双默认值:0.59999999998
-face_detector(一种人脸矩形检测器。选择0(默认值)选择OpenPose body detector(如果body已启用,则选择最精确和最快的一种),1选择OpenCV face detector(不适用于手),2表示将由用户提供,或3也应用手部跟踪(仅适用于手部)。手部跟踪可能会提高网络摄像头(如果帧速率足够高,即每个GPU>7 FPS)和视频的手部关键点检测。这不是人物ID跟踪,它只是在前几帧中手所在的位置查找手,但它不保证帧中的人物ID相同。)类型:int32默认值:0
-face_net_resolution(16的倍数和平方。类似于'net_resolution',但适用于人脸关键点检测器。320x320通常工作正常,但在图像上出现多个人脸时,速度会大大加快。)类型:字符串默认值:“368x368”
-face_render(类似于“render_pose”,但应用于面部。额外选项:-1使用与“render_pose”相同的配置。)类型:int32默认值:-1
-face_render_threshold(类似于“渲染阈值”,但应用于面关键点。)类型:双默认值:0.40000000000000002
-flir_camera(是否使用flir(点灰)立体摄像头。)类型:bool默认值:false
-flir_camera_index(选择-1(默认值))可同时在所有检测到的flir摄像头上运行。否则,选择要运行的flir相机索引,其中0对应于具有最低序列号的检测到的flir相机,“n”对应于第n个最低序列号的相机。)int32:default类型:-1
-fps_max(最大处理帧速率。默认情况下(-1),OpenPose将尽可能快地处理帧。示例用法:如果OpenPose显示图像的速度太快,这可能会降低速度,因此用户可以更好地分析GUI中的每一帧。)类型:双默认值:-1
-frame_first(从所需的帧号开始。索引基于0,即第一帧的索引为0。)类型:uint64默认值:0
-frame_flip(翻转/镜像每个帧(例如,用于实时网络摄像头演示)类型:bool默认值:false
-frame_last(完成所需的帧编号。选择-1禁用。索引基于0,例如,如果设置为10,它将处理11帧(0-10)。)类型:uint64默认值:18446744073709551615
-frame_rotate(旋转每个帧,4个可能的值:0、90、180、270。)类型:int32默认值:0
-frame_step(已处理帧之间的步骤或间隙。例如,`--frame_步骤5`将读取并处理帧0、5、10等)类型:uint64默认值:1
-frame_undistort(如果为false(默认),则不会对图像进行不失真,如果为true,则会根据“camera_parameter_path”中的相机参数对其进行不失真)类型:bool默认值:false
-frames_repeat(完成后重复帧)类型:bool默认值:false
-fullscreen(在全屏模式下运行(运行时按f键切换)。)类型:bool默认值:false
-hand(启用手关键点检测。它将共享身体姿势中的一些参数,例如“model_folder”。与“face”类似,它还将降低性能,增加所需的GPU内存,其速度取决于人数。)类型:bool默认值:false
-hand_alpha_heatmap(类似于阿尔法热图,但适用于手部。)类型:双默认值:0.69999999996
-hand_alpha_pose(类似于“阿尔法姿势”,但适用于手。)类型:双默认值:0.59999999998
-hand_detector(一种手形矩形检测器,类似于“脸形检测器”)类型:int32默认值:0
-hand_net_resolution(16和平方的倍数。类似于'net_分辨率',但适用于手部关键点检测器。)类型:字符串默认值:“368x368”
-hand_render(类似于“render_pose”,但应用于手部。额外选项:-1使用与“render_pose”相同的配置。)类型:int32默认值:-1
-hand_render_threshold(类似于“渲染阈值”,但适用于手部关键点。)类型:双默认值:0.200000000001
-hand_scale_number(类似于“刻度号”,但适用于手部关键点检测器。我们的最佳结果是“手部刻度号”=6和“手部刻度范围”=0.4。)类型:int32默认值:1
-hand_scale_range(与“刻度间隙”类似,但适用于手动关键点探测器。最小刻度和最大刻度之间的总范围。刻度将以比率1居中。例如,如果刻度长度=0.4,刻度数=2,则将有两个刻度,即0.8和1.2。)类型:双默认值:0.40000000000000002
-heatmaps_add_PAFs(与“添加热图零件”功能相同,但添加PAF。)类型:bool默认值:false
-heatmaps_add_bkg(功能与“add_heatmaps_parts”相同,但添加与背景对应的热图。)类型:bool默认值:false
-heatmaps_add_parts(如果为true,它将用身体部位的热图填充op::Datum::poseHeatMaps数组,并将面部和手部的热图类似地填充到op::Datum::faceHeatMaps&op::Datum::handHeatMaps。如果启用了多个“add_heatmaps_X”标志,它将按顺序存储顺序放置:身体部位+bkg+PAFs。它将遵循`src/openpose/POSE/POSE/POSE中的姿势和身体部位的映射顺序参数。cpp`。程序速度将大大降低。OpenPose不是必需的,仅当您打算稍后明确使用此信息时才启用它。)类型:bool默认值:false
-heatmaps_scale(将0设置为scale op::Datum::poseHeatMaps,范围为[-1,1],1表示[0,1];2表示整数取整[0255];3表示无缩放。)类型:int32默认值:2
-identification(实验性的,还不可用。是否启用跨帧身份识别。)类型:bool默认值:false
-ik_threads(实验性,尚未提供。是否从三维关键点启用反向运动学(ik)以获得三维关节角度。默认情况下(0个线程),它是禁用的。增加线程数将提高速度,但也会增加全局系统延迟。)类型:int32默认值:0
-image_dir(处理一个图像目录。使用'examples/media/`作为包含20个图像的默认示例文件夹。读取所有标准格式(jpg、png、bmp等)类型:字符串默认值:“
-ip_camera(带有ip摄像头URL的字符串。它支持RTSP和HTTP等协议。)类型:字符串默认值:“
-keypoint_scale(最终姿势数据数组的(x,y)坐标的缩放,即将使用“write_json”和“write_keypoint”标志保存的(x,y)坐标的缩放。选择“0”将其缩放到原始源分辨率`1`将其缩放到净输出大小(设置为'net_resolution')`2`将其缩放到最终输出大小(设置为'resolution')`3`在[0,1]范围内缩放,其中(0,0)是图像的左上角,(1,1)是右下角;4表示范围[-1,1],其中(-1,-1)表示图像的左上角,(1,1)表示图像的右下角。与“刻度号”和“刻度间隙”无关。)类型:int32默认值:0
-logging_level(范围[0,255]中的logging level.Integer)。0将输出任何opLog()消息,而255将不输出任何opLog()消息。当前OpenPose库消息的范围为0-4:低优先级消息为1,重要消息为4。)类型:int32默认值:3
-maximize_positives(它降低了接受候选人的阈值。它极大地增加了假阳性和真阳性。也就是说,它最大化了平均回忆,但可能会损害平均准确度。)类型:bool默认值:false
-model_folder(文件夹路径(绝对或相对),其中包含模型(姿势、面部等)位置。)类型:字符串默认值:“models/”
-model_pose(要使用的模型。例如,`BODY_25`(CUDA版本最快,最准确,包括脚关键点),`COCO`(18个关键点),`MPI`(15个关键点,最不准确的模型,但在CPU上最快),`MPI_4_layers`(15个关键点,甚至更快,但精确度更低)。)类型:字符串默认值:“BODY\u 25”
-net_resolution(16的倍数。如果增加,精度可能会增加。如果降低,速度会增加。为了获得最大的速度精度平衡,它应该保持与要处理的图像或视频尽可能接近的纵横比。在任何维度中使用“-1”,OP将根据用户的输入值选择最佳纵横比。例如,默认值`-1x368'相当于16:9分辨率的656x368,例如全高清(1980x1080)和高清(1280x720)分辨率。)类型:字符串默认值:“-1x368”
-no_gui_verbose(不要在gui上的输出图像上写入文本(例如,当前帧的数量和人员)。它不会影响姿势渲染。)类型:bool默认值:false
-num_gpu(要使用的gpu设备的数量。如果为负数,它将使用机器中所有可用的gpu。)类型:int32默认值:-1
-num_gpu_start(gpu设备开始编号)类型:int32默认值:0
-number_people_max(此参数将通过保留得分最高的人来限制检测到的最大人数。得分基于图像上的个人区域、身体部位得分以及关节得分(每对连接的身体部位之间)。如果你知道场景中的确切人数,那么它会很有用,这样可以消除误报(如果所有人都被检测到了。但是,它也可能包括误报,通过移除非常小或高度遮挡的人。-1将保留所有人。)类型:int32默认值:-1
-output_resolution(图像分辨率(显示和输出)。使用“-1x-1”强制程序使用输入图像分辨率。)类型:字符串默认值:“-1x-1”
-part_candidates(也可以启用“write_json”以保存此信息。如果为true,它将用身体部位候选者填充op::Datum::poseCandidates数组。候选者指的是所有检测到的身体部位,然后再组装成人。请注意,候选者的数量等于或大于最终身体部位的数量(即组装成人之后)。空的身体部位充满了0。程序速度将略有下降。OpenPose不是必需的,仅当您打算显式使用此信息时才启用它。)类型:bool默认值:false
-part_to_show(要可视化的预测通道:0(默认值)用于所有身体部位,1用于背景热图,2用于热图叠加,3用于PAF叠加,4-(4+#关键点)用于每个身体部位热图,以下为每个身体部位对PAF。)类型:int32默认值:0
-process_real_time(允许保持原始源帧速率(例如视频)。如果处理时间过长,它将跳过帧。如果速度太快,就会减慢速度。)类型:bool默认值:false
-profile_speed(如果在CMake或Makefile.config文件中设置了PROFILER_ENABLED,OpenPose将显示此帧号的一些运行时统计信息。)类型:int32默认值:1000
-prototxt_path(组合`--model_folder`+`--prototxt_path`表示prototxt文件的整个路径。如果为空,则将使用默认的OpenPose prototxt文件。)类型:字符串默认值:“
-render_pose(设置为0表示无渲染,设置为1表示CPU渲染(稍快),设置为2表示GPU渲染(速度较慢但功能更强,例如,`alpha_X`标志)。如果为-1,则在仅启用CPU_时选择CPU,如果启用CUDA时选择GPU。如果启用了渲染,它将使用原始图像和要显示的所需身体部位(即关键点、热图或PAF)渲染“outputData”和“cvOutputData”。)int32:default类型:-1
-render_threshold(仅渲染分数置信度高于此阈值的估计关键点。注意:渲染仅指OpenPose basic GUI中的视觉显示,而不是保存的结果。通常,高阈值(>0.5)只会渲染非常清晰的身体部位;虽然小阈值(~0.1)也会输出猜测和遮挡的关键点,但也会输出更多误报(即错误检测)类型:双默认值:0.05000000000000003
-scale_gap(刻度之间的刻度间距。除非刻度数值大于1,否则不会产生任何效果。初始刻度始终为1。如果要更改初始刻度,实际上需要将“净分辨率”乘以所需的初始刻度。)类型:双默认值:0.25
-scale_number(刻度盘数量与平均值之比)类型:int32默认值:1
-tracking(实验性的,还不可用。是否启用跨帧跟踪。该值指示在每个OpenPose关键点检测之间运行跟踪的帧数。选择-1(默认值)将其禁用,或选择0将同时运行OpenPose关键点检测器和跟踪,以获得比仅OpenPose更高的精度。)类型:int32默认值:-1
-udp_host(实验性的,还不可用。udp通信的IP。例如,`192.168.0.1`。)类型:字符串默认值:“
-udp_port(实验性的,还不可用。udp通信的端口号。)类型:字符串默认值:“8051”
-upsampling_ratio(净分辨率和输出净结果之间的上采样率。小于或等于0的值(默认值)将使用网络默认值(建议)。)类型:双默认值:0
-video(使用视频文件而不是相机。使用'examples/media/video.avi'作为默认示例视频。)类型:字符串默认值:“
-write_bvh(实验性的,尚未提供。例如,“~/Desktop/mocapResult.bvh”。)类型:字符串默认值:“
-write_coco_json(使用json coco验证格式写入人体姿势数据的完整文件路径。如果还需要脚、脸、手等json(“--write_coco_json_variants”),它们将以不同的文件名后缀保存。)类型:字符串默认值:“
-write_coco_json_variant(目前,此选项是实验性的,仅对汽车json生成产生影响。它为cocoJsonSaver选择coco变体。)类型:int32默认值:0
-write_coco_json_variants(身体加1,脚加2,脸加4,手加8。使用0使用所有可能的候选项。例如,7表示身体+脚+脸coco json。)类型:int32默认值:1
-write_heatmaps(以PNG格式写入身体姿势热图的目录。必须至少启用1个“add\u heatmaps\u X”标志。)类型:字符串默认值:“
-write_heatmaps_format(write_heatmaps的文件扩展名和格式,类似于write_images_format)。对于无损压缩,建议使用整型“heatmaps_scale”的“png”,浮动值的“float”。有关详细信息,请参阅'doc/output.md'类型:字符串默认值:“png”
-write_images(以“write_images_format”图像格式写入渲染帧的目录。)类型:字符串默认值:“
-write_images_format(文件扩展名和“write_images”的格式,例如png、jpg或bmp。检查OpenCV函数cv::imwrite以获取所有兼容的扩展名。)类型:字符串默认值:“png”
-write_json(以json格式编写OpenPose输出的目录。它包括身体、手和面部姿势关键点(二维和三维),以及姿势候选(如果启用了“---part_候选”)类型:字符串默认值:“
-write_keypoint((已弃用,请使用'write_json')目录来写入关键点数据。使用“write_keypoint_format”设置格式。)类型:字符串默认值:“
-write_keypoint_format((不推荐使用,使用'write_json')文件扩展名和'write_keypoint'格式:json、xml、yaml和yml。Json不适用于OpenCV<3.0,请改用“write_Json”。)类型:字符串默认值:“yml”
-write_video(以运动JPEG视频格式写入渲染帧的完整文件路径。如果最终路径未在“.avi”中完成,则可能会失败。它在内部使用cv::VideoWriter。标志“write_video_fps”控制fps。或者,视频扩展名可以是“.mp4”,从而生成一个小得多的文件,并允许使用“--write_video_with_audio”。但是,这需要:1)Ubuntu或Mac系统,2)安装了FFmpeg库(`sudo apt get install FFmpeg`),3)临时创建一个与最终视频(不带扩展名)文件路径相同的文件夹,以存储中间帧,稍后将用于生成最终MP4视频。)类型:字符串默认值:“
-write_video_3d(类似于“--write_video”,但应用于3d输出。)类型:字符串默认值:“
-write_video_adam(实验性的,尚未提供。类似于“--write_video”,但适用于adam模型。)类型:字符串默认值:“
-write_video_fps(录制视频的帧速率)。默认情况下,它将尝试获取输入帧的帧速率(例如,输入视频或网络摄像头帧速率)。如果输入帧生成器没有设置FPS(例如,如果OpenCV未使用其支持编译,则为image_dir或网络摄像头),则相应地设置该值(例如,设置为OpenPose GUI显示的帧速率)类型:双默认值:-1
-write_video_with_audio(如果输入是视频,输出也是视频,它将用音频保存视频。它要求输出视频文件路径以“.mp4”格式完成(详细信息请参见“写入视频”)类型:bool默认值:false

如何在pycharm中使用Openpose:

只需把bin文件导入项目,然后在新建的py文件中加入sys语句即可引入openpose以来了,后面的代码和jupyter notebook完全一致

import sys
sys.path.append('./')import pyopenpose as op
....

将pycharm项目打包

首先下载pyinstaller

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Pyinstaller

参考:

windows编译openpose及在python中调用 - 知乎

OpenPose的使用相关推荐

  1. Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)

    目录 1.人体姿态估计简介 2.人体姿态估计数据集 3.OpenPose库 4.实现原理 5.实现神经网络 6.实现代码 1.人体姿态估计简介 人体姿态估计(Human Posture Estimat ...

  2. Openpose+Tensorflow 这样实现人体姿态估计 | 代码干货

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 人体姿态估计指从单个 RGB 图像中精确地估计出人体的位置以及检测骨骼关键点的位置.人体姿态估计是计算机视觉领域的研究热点,是诸 ...

  3. 实战:基于OpenPose的卡通人物可视化 | CSDN博文精选

    作者 | Wuzebiao2016 来源 | CSDN博客 前言 去年打算用些现成的Pose做些展示,因为以前有在OpenPose做些识别等开发工作,所以这次我就简单在OpenPose上把骨架用动画填 ...

  4. 基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 人体姿态估计是一个非常有趣的领域,如果我们能够将诸如棒球摆动 ...

  5. 基于OpenPose的人体姿态检测两个群众

    一.概述 OpenPose最开始由卡内基梅隆大学提出,其主要基于先后发表的几篇文章中提出的模型中进行实现: CVPR 2016: Convolutional Pose Machine(CPM) CVP ...

  6. tensorflow——openpose代码和原理分析

    做openpose已经做了两个月了,精度和速度都还没有提上去,但是还是要总结一下. 人体姿态估计(pose estimation)的目标 实时地对图片中每个人的姿态进行精准的估计.总结起来,就是实时的 ...

  7. opencv openpose

    cpu比较卡,躺着好像不能检测 # To use Inference Engine backend, specify location of plugins: # export LD_LIBRARY_ ...

  8. opencv 图像雾检测_OpenCV图像处理-基于OpenPose的关键点检测

    OpenCV基于OpenPose的手部关键点检测 概述 ✔️ 手部关键点检测,旨在找出给定图片中手指上的关节点及指尖关节点, 其中手部关键点检测的应用场景主要包括: 手势识别 手语识别与理解 手部的行 ...

  9. CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测

    CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 ...

  10. CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介、案例应用之详细攻略

    CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介.案例应用之详细攻略 目录 Pose E ...

最新文章

  1. [VNC] 分辨率, 退出全屏,
  2. 使用EasyUI的Datagrid的Editor进行行编辑,Enter回车结束编辑,并开启新的一行。
  3. Android --- 图片的特效处理
  4. Citrix Production Features by Edition
  5. dockerfile cd目录_使用Werf和现有的Dockerfiles改善你的CI/CD体验
  6. python百钱买百鸡问题答案_PHP/Python---百钱百鸡简单实现及优化
  7. print的小白用法
  8. html 中写注释吗,html怎么注释?
  9. ztree带有选项框的树形菜单使用
  10. ECharts图表组件与FusionCharts图表组件对比
  11. 迷你博客“废话”转移
  12. 【科普】一读就懂:CPU到底是怎么识别代码的?
  13. Hibernate 的 could not initialize proxy - the owning Session was closed问题
  14. aria2 32bit Android,【各版本整合】32/64位Aria2 Tools - 支持RPC协议 AriaNG(客户端+网页版)...
  15. cadence617安装教程linux,CentOS7安装cadenceIC617(三) 启动篇
  16. 【SSL_2020.10.27】小biu闯关
  17. 2017百度世界大会 | 爱奇艺创始人CEO龚宇演讲速记
  18. 如何运行matlab代码?怎样找到matlab主程序?
  19. 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K
  20. VMware清理Linux虚拟机硬盘

热门文章

  1. 软件工程课程项目设计 图书管理系统
  2. 【Windows网络编程】完成端口IOCP介绍(超详细)
  3. Java判断操作系统是32位还是64位
  4. html注释js,JavaScript 注释
  5. 解决JS代码注释无效
  6. 编写注册表reg文件及批处理操作注册表
  7. powerbi嵌入到HTML5,如何把Power BI嵌入到Web應用中
  8. 分形理论的Hausdorff维数
  9. js获取当前服务器信息,js获取当前URL、参数、端口、IP等服务器信息
  10. python数据分析与挖掘pdf_python数据分析与挖掘实战