Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
shy_201992
openpose
提交
ecdc7d00
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,发现更多精彩内容 >>
提交
ecdc7d00
编写于
12月 06, 2018
作者:
G
gineshidalgo99
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed bug in Camera parameter reader with folders
上级
7ae6a711
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
260 addition
and
103 deletion
+260
-103
doc/release_notes.md
doc/release_notes.md
+1
-0
examples/calibration/calibration.cpp
examples/calibration/calibration.cpp
+37
-20
include/openpose/calibration/cameraParameterEstimation.hpp
include/openpose/calibration/cameraParameterEstimation.hpp
+10
-5
src/openpose/calibration/cameraParameterEstimation.cpp
src/openpose/calibration/cameraParameterEstimation.cpp
+171
-45
src/openpose/producer/producer.cpp
src/openpose/producer/producer.cpp
+41
-33
未找到文件。
doc/release_notes.md
浏览文件 @
ecdc7d00
...
...
@@ -310,6 +310,7 @@ OpenPose Library - Release Notes
3.
Template functions could not be imported in Windows for projects using the OpenPose library DLL.
4.
Function
`scaleKeypoints2d`
was not working if any of the scales was 1 (e.g., fail if scaleX = 1 but scaleY != 1, or if any offset was not 0).
5.
Fixed bug in
`KeepTopNPeople`
that could provoke segmentation fault for
`number_people_max`
> 1.
6.
Camera parameter reader can now take folder paths even if they are not finished in
`/`
(e.g.,
`~/Desktop/`
worked but
`~/Desktop`
did not).
...
...
examples/calibration/calibration.cpp
浏览文件 @
ecdc7d00
...
...
@@ -26,8 +26,8 @@ DEFINE_int32(cam0, 1, "Baseline camera for ext
" world coordinate origin."
);
DEFINE_int32
(
cam1
,
0
,
"Target camera to estimate its extrinsic parameters, it will be calibrated assuming cam0"
" as the world coordinate origin."
);
// // Mode
3
// DEFINE_int32(number_cameras, 4, "Number of cameras.");
// // Mode
s 3-4
// DEFINE_int32(number_cameras, 4, "Number of cameras
(for mode 3-4)
.");
// Producer
DEFINE_string
(
camera_parameter_folder
,
"models/cameraParameters/flir/"
,
"String with the folder where the camera parameters are or will be"
" located."
);
...
...
@@ -36,7 +36,7 @@ int openPoseDemo()
{
try
{
op
::
log
(
"Starting OpenPose
demo
..."
,
op
::
Priority
::
High
);
op
::
log
(
"Starting OpenPose
calibration toolbox
..."
,
op
::
Priority
::
High
);
const
auto
timerBegin
=
std
::
chrono
::
high_resolution_clock
::
now
();
// logging_level
...
...
@@ -44,24 +44,26 @@ int openPoseDemo()
__LINE__
,
__FUNCTION__
,
__FILE__
);
op
::
ConfigureLog
::
setPriorityThreshold
((
op
::
Priority
)
FLAGS_logging_level
);
// Common parameters
const
auto
gridInnerCorners
=
op
::
flagsToPoint
(
FLAGS_grid_number_inner_corners
,
"12x7"
);
const
auto
calibrationImageDir
=
op
::
formatAsDirectory
(
FLAGS_calibration_image_dir
);
// Calibration - Intrinsics
if
(
FLAGS_mode
==
1
)
{
op
::
log
(
"Running calibration (intrinsic parameters)..."
,
op
::
Priority
::
High
);
// Obtain & save intrinsics
const
auto
gridInnerCorners
=
op
::
flagsToPoint
(
FLAGS_grid_number_inner_corners
,
"12x7"
);
// Parameters
// const auto flags = 0; // 5 parameters
const
auto
flags
=
cv
::
CALIB_RATIONAL_MODEL
;
// 8 parameters
// const auto flags = cv::CALIB_RATIONAL_MODEL | cv::CALIB_THIN_PRISM_MODEL; // 12 parameters
// const auto flags = cv::CALIB_RATIONAL_MODEL | cv::CALIB_THIN_PRISM_MODEL | cv::CALIB_TILTED_MODEL; // 14
// const auto saveImagesWithCorners = false;
const
auto
saveImagesWithCorners
=
true
;
// Run ca
mera calibration code
// Run ca
libration
op
::
estimateAndSaveIntrinsics
(
gridInnerCorners
,
FLAGS_grid_square_size_mm
,
flags
,
op
::
formatAsDirectory
(
FLAGS_camera_parameter_folder
),
op
::
formatAsDirectory
(
FLAGS_calibration_image_dir
),
FLAGS_camera_serial_number
,
saveImagesWithCorners
);
op
::
formatAsDirectory
(
FLAGS_camera_parameter_folder
),
calibrationImageDir
,
FLAGS_camera_serial_number
,
saveImagesWithCorners
);
op
::
log
(
"Intrinsic calibration completed!"
,
op
::
Priority
::
High
);
}
...
...
@@ -69,27 +71,42 @@ int openPoseDemo()
else
if
(
FLAGS_mode
==
2
)
{
op
::
log
(
"Running calibration (extrinsic parameters)..."
,
op
::
Priority
::
High
);
//
Parameters
//
Run calibration
op
::
estimateAndSaveExtrinsics
(
FLAGS_camera_parameter_folder
,
op
::
formatAsDirectory
(
FLAGS_calibration_image_dir
)
,
op
::
flagsToPoint
(
FLAGS_grid_number_inner_corners
,
"12x7"
),
FLAGS_grid_square_size_mm
,
FLAGS_cam0
,
FLAGS_cam1
,
FLAGS_omit_distortion
,
FLAGS_combine_cam0_extrinsics
);
FLAGS_camera_parameter_folder
,
calibrationImageDir
,
gridInnerCorners
,
FLAGS_grid_square_size_mm
,
FLAGS_cam0
,
FLAGS_cam1
,
FLAGS_omit_distortion
,
FLAGS_combine_cam0_extrinsics
);
// Logging
op
::
log
(
"Extrinsic calibration completed!"
,
op
::
Priority
::
High
);
}
// // Calibration - Extrinsics
Refinement with Visual SFM
// // Calibration - Extrinsics
- Bundle Adjustment (BA)
// else if (FLAGS_mode == 3)
// {
// op::log("Running calibration (bundle adjustment over extrinsic parameters)...", op::Priority::High);
// // Sanity check
// if (!FLAGS_omit_distortion)
// op::error("This mode assumes that the images are already undistorted (add flag `--omit_distortion`.",
// __LINE__, __FUNCTION__, __FILE__);
// // Parameters
// const auto saveImagesWithCorners = false;
// // Run calibration
// op::refineAndSaveExtrinsics(
// FLAGS_camera_parameter_folder, calibrationImageDir, gridInnerCorners, FLAGS_grid_square_size_mm,
// FLAGS_number_cameras, FLAGS_omit_distortion, saveImagesWithCorners);
// // Logging
// op::log("Extrinsic calibration (bundle adjustment) completed!", op::Priority::High);
// }
// // Calibration - Extrinsics Refinement with Visual SFM
// else if (FLAGS_mode == 4)
// {
// op::log("Running calibration (intrinsic parameters)...", op::Priority::High);
// // Obtain & save intrinsics
// const auto gridInnerCorners = op::flagsToPoint(FLAGS_grid_number_inner_corners, "12x7");
// const auto saveImagesWithCorners = false;
// // const auto saveImagesWithCorners = true;
// // Run camera calibration code
// op::estimateAndSaveSiftFile(gridInnerCorners,
// op::formatAsDirectory(FLAGS_calibration_image_dir),
// FLAGS_number_cameras,
// saveImagesWithCorners);
// op::estimateAndSaveSiftFile(
// gridInnerCorners, calibrationImageDir, FLAGS_number_cameras, saveImagesWithCorners);
// op::log("Intrinsic calibration completed!", op::Priority::High);
// }
...
...
@@ -100,7 +117,7 @@ int openPoseDemo()
const
auto
now
=
std
::
chrono
::
high_resolution_clock
::
now
();
const
auto
totalTimeSec
=
(
double
)
std
::
chrono
::
duration_cast
<
std
::
chrono
::
nanoseconds
>
(
now
-
timerBegin
).
count
()
*
1e-9
;
const
auto
message
=
"OpenPose
demo
successfully finished. Total time: "
const
auto
message
=
"OpenPose
calibration toolbox
successfully finished. Total time: "
+
std
::
to_string
(
totalTimeSec
)
+
" seconds."
;
op
::
log
(
message
,
op
::
Priority
::
High
);
...
...
include/openpose/calibration/cameraParameterEstimation.hpp
浏览文件 @
ecdc7d00
...
...
@@ -15,16 +15,21 @@ namespace op
*/
OP_API
void
estimateAndSaveIntrinsics
(
const
Point
<
int
>&
gridInnerCorners
,
const
float
gridSquareSizeMm
,
const
int
flags
,
const
std
::
string
&
outputParameterFolder
,
const
std
::
string
&
image
s
Folder
,
const
std
::
string
&
serialNumber
,
const
std
::
string
&
outputParameterFolder
,
const
std
::
string
&
imageFolder
,
const
std
::
string
&
serialNumber
,
const
bool
saveImagesWithCorners
=
false
);
OP_API
void
estimateAndSaveExtrinsics
(
const
std
::
string
&
intrinsicsFolder
,
const
std
::
string
&
extrinsicsImagesFolder
,
const
Point
<
int
>&
gridInnerCorners
,
const
float
gridSquareSizeMm
,
const
int
index0
,
const
int
index1
,
const
bool
imagesAreUndistorted
,
const
bool
combineCam0Extrinsics
);
const
std
::
string
&
parameterFolder
,
const
std
::
string
&
imageFolder
,
const
Point
<
int
>&
gridInnerCorners
,
const
float
gridSquareSizeMm
,
const
int
index0
,
const
int
index1
,
const
bool
imagesAreUndistorted
,
const
bool
combineCam0Extrinsics
);
OP_API
void
refineAndSaveExtrinsics
(
const
std
::
string
&
parameterFolder
,
const
std
::
string
&
imageFolder
,
const
Point
<
int
>&
gridInnerCorners
,
const
float
gridSquareSizeMm
,
const
int
numberCameras
,
const
bool
imagesAreUndistorted
,
const
bool
saveImagesWithCorners
=
false
);
OP_API
void
estimateAndSaveSiftFile
(
const
Point
<
int
>&
gridInnerCorners
,
const
std
::
string
&
image
s
Folder
,
const
int
numberCameras
,
const
Point
<
int
>&
gridInnerCorners
,
const
std
::
string
&
imageFolder
,
const
int
numberCameras
,
const
bool
saveImagesWithCorners
=
false
);
}
...
...
src/openpose/calibration/cameraParameterEstimation.cpp
浏览文件 @
ecdc7d00
此差异已折叠。
点击以展开。
src/openpose/producer/producer.cpp
浏览文件 @
ecdc7d00
...
...
@@ -28,47 +28,55 @@ namespace op
mNumberEmptyFrames
{
0
},
mTrackingFps
{
false
}
{
// Basic properties
mProperties
[(
unsigned
int
)
ProducerProperty
::
AutoRepeat
]
=
(
double
)
false
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
Flip
]
=
(
double
)
false
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
Rotation
]
=
0.
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
NumberViews
]
=
numberViews
;
auto
&
mNumberViews
=
mProperties
[(
unsigned
int
)
ProducerProperty
::
NumberViews
];
// Camera (distortion, intrinsic, and extrinsic) parameters
if
(
mType
!=
ProducerType
::
FlirCamera
)
try
{
// Undistort image?
mCameraParameterReader
.
setUndistortImage
(
undistortImage
);
// If no stereo --> Set to 1
if
(
mNumberViews
<=
0
)
mNumberViews
=
1
;
// Get camera paremeters
if
(
mNumberViews
>
1
||
undistortImage
)
// Basic properties
mProperties
[(
unsigned
int
)
ProducerProperty
::
AutoRepeat
]
=
(
double
)
false
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
Flip
]
=
(
double
)
false
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
Rotation
]
=
0.
;
mProperties
[(
unsigned
int
)
ProducerProperty
::
NumberViews
]
=
numberViews
;
auto
&
mNumberViews
=
mProperties
[(
unsigned
int
)
ProducerProperty
::
NumberViews
];
// Camera (distortion, intrinsic, and extrinsic) parameters
if
(
mType
!=
ProducerType
::
FlirCamera
)
{
const
auto
extension
=
getFileExtension
(
cameraParameterPath
);
// Undistort image?
mCameraParameterReader
.
setUndistortImage
(
undistortImage
);
// If no stereo --> Set to 1
if
(
mNumberViews
<=
0
)
mNumberViews
=
1
;
// Get camera paremeters
if
(
extension
==
"xml"
||
extension
==
"XML"
)
mCameraParameterReader
.
readParameters
(
getFileParentFolderPath
(
cameraParameterPath
),
getFileNameNoExtension
(
cameraParameterPath
));
else
// if (mNumberViews > 1)
if
(
mNumberViews
>
1
||
undistortImage
)
{
// Read camera parameters from SN
auto
serialNumbers
=
getFilesOnDirectory
(
cameraParameterPath
,
".xml"
);
// Get serial numbers
for
(
auto
&
serialNumber
:
serialNumbers
)
serialNumber
=
getFileNameNoExtension
(
serialNumber
);
const
auto
extension
=
getFileExtension
(
cameraParameterPath
);
// Get camera paremeters
mCameraParameterReader
.
readParameters
(
cameraParameterPath
,
serialNumbers
);
if
(
extension
==
"xml"
||
extension
==
"XML"
)
mCameraParameterReader
.
readParameters
(
getFileParentFolderPath
(
cameraParameterPath
),
getFileNameNoExtension
(
cameraParameterPath
));
else
// if (mNumberViews > 1)
{
const
auto
cameraParameterPathCleaned
=
formatAsDirectory
(
cameraParameterPath
);
// Read camera parameters from SN
auto
serialNumbers
=
getFilesOnDirectory
(
cameraParameterPathCleaned
,
".xml"
);
// Get serial numbers
for
(
auto
&
serialNumber
:
serialNumbers
)
serialNumber
=
getFileNameNoExtension
(
serialNumber
);
// Get camera paremeters
mCameraParameterReader
.
readParameters
(
cameraParameterPathCleaned
,
serialNumbers
);
}
// Sanity check
if
((
int
)
mCameraParameterReader
.
getNumberCameras
()
!=
mNumberViews
)
error
(
"Found different number of camera parameter files than the number indicated by"
" `--3d_views` ("
+
std
::
to_string
(
mCameraParameterReader
.
getNumberCameras
())
+
" vs. "
+
std
::
to_string
(
mNumberViews
)
+
"). Make sure they are the same number of files."
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
// Sanity check
if
((
int
)
mCameraParameterReader
.
getNumberCameras
()
!=
mNumberViews
)
error
(
"Found different number of camera parameter files than the number indicated by"
" `--3d_views` ("
+
std
::
to_string
(
mCameraParameterReader
.
getNumberCameras
())
+
" vs. "
+
std
::
to_string
(
mNumberViews
)
+
"). Make sure they are the same number of files."
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
}
catch
(
const
std
::
exception
&
e
)
{
error
(
e
.
what
(),
__LINE__
,
__FUNCTION__
,
__FILE__
);
}
}
Producer
::~
Producer
(){}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录