OpenPose的使用

介绍

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

OpenPose的使用_第1张图片

安装CMake

下载:Download | CMake

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

OpenPose的使用_第2张图片

下载pybind11(下载Zip包即可)

GitHub - pybind/pybind11 at 085a29436a8c472caaaf7157aa644b571079bcaa

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

OpenPose的使用_第3张图片

下载Caffe(下载Zip包即可)

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

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

OpenPose的使用_第4张图片

安装Cuda

CUDA Toolkit 11.7 Downloads | NVIDIA Developer

OpenPose的使用_第5张图片

 默认安装即可

下载Cudnn

cuDNN Archive | NVIDIA Developer

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

OpenPose的使用_第6张图片

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

OpenPose的使用_第7张图片

 OpenPose的使用_第8张图片

 OpenPose的使用_第9张图片

 找到Visual Studio Installer, 点击修改

OpenPose的使用_第10张图片

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

OpenPose的使用_第11张图片

搜索Windows 10 SDK勾选 

OpenPose的使用_第12张图片

编译openpose代码

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

OpenPose的使用_第13张图片

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

OpenPose的使用_第14张图片

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

OpenPose的使用_第15张图片

 OpenPose的使用_第16张图片

OpenPose的使用_第17张图片

 然后打开Build Python,然后点击ConfigureOpenPose的使用_第18张图片

OpenPose的使用_第19张图片

 然后点击Generate

OpenPose的使用_第20张图片

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

OpenPose的使用_第21张图片

然后鼠标右键 OpenposeDemo选择生成

 OpenPose的使用_第22张图片

生成完成 

OpenPose的使用_第23张图片

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

OpenPose的使用_第24张图片

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

OpenPose的使用_第25张图片 然后运行,点击本地Windwos调试器,这时就会调用摄像头实时地识别人体关节点了

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

OpenPose的使用_第26张图片

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

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

OpenPose的使用_第27张图片

然后再次运行即可

运行时遇到的问题:

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

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

OpenPose的使用_第28张图片

然后我们尝试使用python调用

右键pyopenpose点击生成

OpenPose的使用_第29张图片

OpenPose的使用_第30张图片

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

OpenPose的使用_第31张图片

OpenPose的使用_第32张图片

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

OpenPose的使用_第33张图片

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

OpenPose的使用_第34张图片

然后我们先在cmd调用一下

OpenPose的使用_第35张图片

OpenPose的使用_第36张图片

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

OpenPose的使用_第37张图片

OpenPose的使用_第38张图片

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

OpenPose的使用_第39张图片

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)

OpenPose的使用_第40张图片

 可以看到有10个点 

 OpenPose的使用_第41张图片

在图片中正好也有10个点 

OpenPose的使用_第42张图片

对面部和手部的识别

查看命令参数: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中调用 - 知乎

你可能感兴趣的:(笔记,大数据)