Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
shy_201992
openpose
提交
88f3ade3
O
openpose
项目概览
shy_201992
/
openpose
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openpose
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
88f3ade3
编写于
9月 06, 2017
作者:
G
gineshidalgo99
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Tutorial wrapper: added how to read keypoint data
上级
4f81fe5b
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
72 addition
and
0 deletion
+72
-0
doc/release_notes.md
doc/release_notes.md
+2
-0
examples/tests/speed_test.sh
examples/tests/speed_test.sh
+11
-0
examples/tutorial_wrapper/1_user_asynchronous.cpp
examples/tutorial_wrapper/1_user_asynchronous.cpp
+34
-0
examples/tutorial_wrapper/2_user_synchronous.cpp
examples/tutorial_wrapper/2_user_synchronous.cpp
+25
-0
未找到文件。
doc/release_notes.md
浏览文件 @
88f3ade3
...
...
@@ -104,4 +104,6 @@ OpenPose Library - Release Notes
## Current version (future OpenPose 1.0.3)
1.
Main improvements:
1.
Added how to use keypoint data in
`examples/tutorial_wrapper/`
.
2.
Main bugs fixed:
1.
Windows version crashing with std::map copy.
examples/tests/speed_test.sh
0 → 100644
浏览文件 @
88f3ade3
# Script for internal use. We might completely change it continuously and we will not answer questions about it.
# USAGE EXAMPLE
# clear && clear && make all -j24 && bash ./examples/tests/speed_test.sh
# # Go back to main folder
# cd ../../
# Get model speed
~/devel/openpose_caffe_train/build/tools/caffe
time
-gpu
0
-model
/mnt/DataUbuntu/openpose_train/training_results_light/pose/pose_training.prototxt
# ./3rdparty/caffe/build/tools/caffe time -gpu 0 -model /mnt/DataUbuntu/openpose_train/training_results_light/pose/pose_training.prototxt
examples/tutorial_wrapper/1_user_asynchronous.cpp
浏览文件 @
88f3ade3
...
...
@@ -242,6 +242,37 @@ public:
else
op
::
log
(
"Nullptr or empty datumsPtr found."
,
op
::
Priority
::
High
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
void
printKeypoitns
(
const
std
::
shared_ptr
<
std
::
vector
<
UserDatum
>>&
datumsPtr
)
{
// Example: How to use the pose keypoints
if
(
datumsPtr
!=
nullptr
&&
!
datumsPtr
->
empty
())
{
op
::
log
(
"
\n
Keypoints:"
);
// Accesing each element of the keypoints
const
auto
&
poseKeypoints
=
datumsPtr
->
at
(
0
).
poseKeypoints
;
op
::
log
(
"Person pose keypoints:"
);
for
(
auto
person
=
0
;
person
<
poseKeypoints
.
getSize
(
0
)
;
person
++
)
{
op
::
log
(
"Person "
+
std
::
to_string
(
person
)
+
" (x, y, score):"
);
for
(
auto
bodyPart
=
0
;
bodyPart
<
poseKeypoints
.
getSize
(
1
)
;
bodyPart
++
)
{
std
::
string
valueToPrint
;
for
(
auto
xyscore
=
0
;
xyscore
<
poseKeypoints
.
getSize
(
2
)
;
xyscore
++
)
{
valueToPrint
+=
std
::
to_string
(
poseKeypoints
[{
person
,
bodyPart
,
xyscore
}]
)
+
" "
;
}
op
::
log
(
valueToPrint
);
}
}
op
::
log
(
" "
);
// Alternative: just getting std::string equivalent
op
::
log
(
"Face keypoints: "
+
datumsPtr
->
at
(
0
).
faceKeypoints
.
toString
());
op
::
log
(
"Left hand keypoints: "
+
datumsPtr
->
at
(
0
).
handKeypoints
[
0
].
toString
());
op
::
log
(
"Right hand keypoints: "
+
datumsPtr
->
at
(
0
).
handKeypoints
[
1
].
toString
());
}
else
op
::
log
(
"Nullptr or empty datumsPtr found."
,
op
::
Priority
::
High
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
};
int
openPoseTutorialWrapper1
()
...
...
@@ -319,7 +350,10 @@ int openPoseTutorialWrapper1()
// Pop frame
std
::
shared_ptr
<
std
::
vector
<
UserDatum
>>
datumProcessed
;
if
(
successfullyEmplaced
&&
opWrapper
.
waitAndPop
(
datumProcessed
))
{
userOutputClass
.
display
(
datumProcessed
);
userOutputClass
.
printKeypoitns
(
datumProcessed
);
}
else
op
::
log
(
"Processed datum could not be emplaced."
,
op
::
Priority
::
High
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
...
...
examples/tutorial_wrapper/2_user_synchronous.cpp
浏览文件 @
88f3ade3
...
...
@@ -276,6 +276,31 @@ public:
// datum.poseKeypoints: Array<float> with the estimated pose
if
(
datumsPtr
!=
nullptr
&&
!
datumsPtr
->
empty
())
{
// Show in command line the resulting pose keypoints for body, face and hands
op
::
log
(
"
\n
Keypoints:"
);
// Accesing each element of the keypoints
const
auto
&
poseKeypoints
=
datumsPtr
->
at
(
0
).
poseKeypoints
;
op
::
log
(
"Person pose keypoints:"
);
for
(
auto
person
=
0
;
person
<
poseKeypoints
.
getSize
(
0
)
;
person
++
)
{
op
::
log
(
"Person "
+
std
::
to_string
(
person
)
+
" (x, y, score):"
);
for
(
auto
bodyPart
=
0
;
bodyPart
<
poseKeypoints
.
getSize
(
1
)
;
bodyPart
++
)
{
std
::
string
valueToPrint
;
for
(
auto
xyscore
=
0
;
xyscore
<
poseKeypoints
.
getSize
(
2
)
;
xyscore
++
)
{
valueToPrint
+=
std
::
to_string
(
poseKeypoints
[{
person
,
bodyPart
,
xyscore
}]
)
+
" "
;
}
op
::
log
(
valueToPrint
);
}
}
op
::
log
(
" "
);
// Alternative: just getting std::string equivalent
op
::
log
(
"Face keypoints: "
+
datumsPtr
->
at
(
0
).
faceKeypoints
.
toString
());
op
::
log
(
"Left hand keypoints: "
+
datumsPtr
->
at
(
0
).
handKeypoints
[
0
].
toString
());
op
::
log
(
"Right hand keypoints: "
+
datumsPtr
->
at
(
0
).
handKeypoints
[
1
].
toString
());
// Display rendered output image
cv
::
imshow
(
"User worker GUI"
,
datumsPtr
->
at
(
0
).
cvOutputData
);
cv
::
waitKey
(
1
);
// It displays the image and sleeps at least 1 ms (it usually sleeps ~5-10 msec to display the image)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录