Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
c0e456de
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c0e456de
编写于
6月 07, 2017
作者:
V
Vladislav Sovrasov
提交者:
sovrasov
6月 13, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
calib3d: use calibration flags from the new enums
上级
d121d1c5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
40 deletion
+42
-40
modules/calib3d/src/calibration.cpp
modules/calib3d/src/calibration.cpp
+42
-40
未找到文件。
modules/calib3d/src/calibration.cpp
浏览文件 @
c0e456de
...
...
@@ -1319,7 +1319,7 @@ static double cvCalibrateCamera2Internal( const CvMat* objectPoints,
(
npoints
->
rows
!=
1
&&
npoints
->
cols
!=
1
)
)
CV_Error
(
CV_StsUnsupportedFormat
,
"the array of point counters must be 1-dimensional integer vector"
);
if
(
flags
&
C
V_C
ALIB_TILTED_MODEL
)
if
(
flags
&
CALIB_TILTED_MODEL
)
{
//when the tilted sensor model is used the distortion coefficients matrix must have 14 parameters
if
(
distCoeffs
->
cols
*
distCoeffs
->
rows
!=
14
)
...
...
@@ -1328,7 +1328,7 @@ static double cvCalibrateCamera2Internal( const CvMat* objectPoints,
else
{
//when the thin prism model is used the distortion coefficients matrix must have 12 parameters
if
(
flags
&
C
V_C
ALIB_THIN_PRISM_MODEL
)
if
(
flags
&
CALIB_THIN_PRISM_MODEL
)
if
(
distCoeffs
->
cols
*
distCoeffs
->
rows
!=
12
)
CV_Error
(
CV_StsBadArg
,
"Thin prism model must have 12 parameters in the distortion matrix"
);
}
...
...
@@ -1498,26 +1498,28 @@ static double cvCalibrateCamera2Internal( const CvMat* objectPoints,
if
(
flags
&
CALIB_FIX_ASPECT_RATIO
)
mask
[
0
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_FOCAL_LENGTH
)
if
(
flags
&
CALIB_FIX_FOCAL_LENGTH
)
mask
[
0
]
=
mask
[
1
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_PRINCIPAL_POINT
)
if
(
flags
&
CALIB_FIX_PRINCIPAL_POINT
)
mask
[
2
]
=
mask
[
3
]
=
0
;
if
(
flags
&
C
V_C
ALIB_ZERO_TANGENT_DIST
)
if
(
flags
&
CALIB_ZERO_TANGENT_DIST
)
{
param
[
6
]
=
param
[
7
]
=
0
;
mask
[
6
]
=
mask
[
7
]
=
0
;
}
if
(
!
(
flags
&
CALIB_RATIONAL_MODEL
)
)
flags
|=
CALIB_FIX_K4
+
CALIB_FIX_K5
+
CALIB_FIX_K6
;
if
(
!
(
flags
&
C
V_C
ALIB_THIN_PRISM_MODEL
))
if
(
!
(
flags
&
CALIB_THIN_PRISM_MODEL
))
flags
|=
CALIB_FIX_S1_S2_S3_S4
;
if
(
!
(
flags
&
C
V_C
ALIB_TILTED_MODEL
))
if
(
!
(
flags
&
CALIB_TILTED_MODEL
))
flags
|=
CALIB_FIX_TAUX_TAUY
;
mask
[
4
]
=
!
(
flags
&
CALIB_FIX_K1
);
mask
[
5
]
=
!
(
flags
&
CALIB_FIX_K2
);
mask
[
6
]
=
mask
[
7
]
=
!
(
flags
&
CALIB_FIX_TANGENT_DIST
);
if
(
flags
&
CALIB_FIX_TANGENT_DIST
)
{
mask
[
6
]
=
mask
[
7
]
=
1
;
}
mask
[
8
]
=
!
(
flags
&
CALIB_FIX_K3
);
mask
[
9
]
=
!
(
flags
&
CALIB_FIX_K4
);
mask
[
10
]
=
!
(
flags
&
CALIB_FIX_K5
);
...
...
@@ -1819,39 +1821,39 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1
cvConvert
(
points
,
imagePoints
[
k
]
);
cvReshape
(
imagePoints
[
k
],
imagePoints
[
k
],
2
,
1
);
if
(
flags
&
(
C
V_CALIB_FIX_INTRINSIC
|
CV_
CALIB_USE_INTRINSIC_GUESS
|
C
V_CALIB_FIX_ASPECT_RATIO
|
CV_
CALIB_FIX_FOCAL_LENGTH
)
)
if
(
flags
&
(
C
ALIB_FIX_INTRINSIC
|
CALIB_USE_INTRINSIC_GUESS
|
C
ALIB_FIX_ASPECT_RATIO
|
CALIB_FIX_FOCAL_LENGTH
)
)
cvConvert
(
cameraMatrix
,
&
K
[
k
]
);
if
(
flags
&
(
C
V_CALIB_FIX_INTRINSIC
|
CV_
CALIB_USE_INTRINSIC_GUESS
|
C
V_CALIB_FIX_K1
|
CV_CALIB_FIX_K2
|
CV_CALIB_FIX_K3
|
CV_CALIB_FIX_K4
|
CV_CALIB_FIX_K5
|
CV_
CALIB_FIX_K6
)
)
if
(
flags
&
(
C
ALIB_FIX_INTRINSIC
|
CALIB_USE_INTRINSIC_GUESS
|
C
ALIB_FIX_K1
|
CALIB_FIX_K2
|
CALIB_FIX_K3
|
CALIB_FIX_K4
|
CALIB_FIX_K5
|
CALIB_FIX_K6
)
)
{
CvMat
tdist
=
cvMat
(
distCoeffs
->
rows
,
distCoeffs
->
cols
,
CV_MAKETYPE
(
CV_64F
,
CV_MAT_CN
(
distCoeffs
->
type
)),
Dist
[
k
].
data
.
db
);
cvConvert
(
distCoeffs
,
&
tdist
);
}
if
(
!
(
flags
&
(
C
V_CALIB_FIX_INTRINSIC
|
CV_
CALIB_USE_INTRINSIC_GUESS
)))
if
(
!
(
flags
&
(
C
ALIB_FIX_INTRINSIC
|
CALIB_USE_INTRINSIC_GUESS
)))
{
cvCalibrateCamera2
(
objectPoints
,
imagePoints
[
k
],
npoints
,
imageSize
,
&
K
[
k
],
&
Dist
[
k
],
NULL
,
NULL
,
flags
);
}
}
if
(
flags
&
C
V_C
ALIB_SAME_FOCAL_LENGTH
)
if
(
flags
&
CALIB_SAME_FOCAL_LENGTH
)
{
static
const
int
avg_idx
[]
=
{
0
,
4
,
2
,
5
,
-
1
};
for
(
k
=
0
;
avg_idx
[
k
]
>=
0
;
k
++
)
A
[
0
][
avg_idx
[
k
]]
=
A
[
1
][
avg_idx
[
k
]]
=
(
A
[
0
][
avg_idx
[
k
]]
+
A
[
1
][
avg_idx
[
k
]])
*
0.5
;
}
if
(
flags
&
C
V_C
ALIB_FIX_ASPECT_RATIO
)
if
(
flags
&
CALIB_FIX_ASPECT_RATIO
)
{
for
(
k
=
0
;
k
<
2
;
k
++
)
aspectRatio
[
k
]
=
A
[
k
][
0
]
/
A
[
k
][
4
];
}
recomputeIntrinsics
=
(
flags
&
C
V_C
ALIB_FIX_INTRINSIC
)
==
0
;
recomputeIntrinsics
=
(
flags
&
CALIB_FIX_INTRINSIC
)
==
0
;
err
.
reset
(
cvCreateMat
(
maxPoints
*
2
,
1
,
CV_64F
));
Je
.
reset
(
cvCreateMat
(
maxPoints
*
2
,
6
,
CV_64F
));
...
...
@@ -1875,40 +1877,40 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1
if
(
recomputeIntrinsics
)
{
uchar
*
imask
=
solver
.
mask
->
data
.
ptr
+
nparams
-
NINTRINSIC
*
2
;
if
(
!
(
flags
&
C
V_C
ALIB_RATIONAL_MODEL
)
)
flags
|=
C
V_CALIB_FIX_K4
|
CV_CALIB_FIX_K5
|
CV_
CALIB_FIX_K6
;
if
(
!
(
flags
&
C
V_C
ALIB_THIN_PRISM_MODEL
)
)
flags
|=
C
V_C
ALIB_FIX_S1_S2_S3_S4
;
if
(
!
(
flags
&
C
V_C
ALIB_TILTED_MODEL
)
)
flags
|=
C
V_C
ALIB_FIX_TAUX_TAUY
;
if
(
flags
&
C
V_C
ALIB_FIX_ASPECT_RATIO
)
if
(
!
(
flags
&
CALIB_RATIONAL_MODEL
)
)
flags
|=
C
ALIB_FIX_K4
|
CALIB_FIX_K5
|
CALIB_FIX_K6
;
if
(
!
(
flags
&
CALIB_THIN_PRISM_MODEL
)
)
flags
|=
CALIB_FIX_S1_S2_S3_S4
;
if
(
!
(
flags
&
CALIB_TILTED_MODEL
)
)
flags
|=
CALIB_FIX_TAUX_TAUY
;
if
(
flags
&
CALIB_FIX_ASPECT_RATIO
)
imask
[
0
]
=
imask
[
NINTRINSIC
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_FOCAL_LENGTH
)
if
(
flags
&
CALIB_FIX_FOCAL_LENGTH
)
imask
[
0
]
=
imask
[
1
]
=
imask
[
NINTRINSIC
]
=
imask
[
NINTRINSIC
+
1
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_PRINCIPAL_POINT
)
if
(
flags
&
CALIB_FIX_PRINCIPAL_POINT
)
imask
[
2
]
=
imask
[
3
]
=
imask
[
NINTRINSIC
+
2
]
=
imask
[
NINTRINSIC
+
3
]
=
0
;
if
(
flags
&
C
V_C
ALIB_ZERO_TANGENT_DIST
)
if
(
flags
&
CALIB_ZERO_TANGENT_DIST
)
imask
[
6
]
=
imask
[
7
]
=
imask
[
NINTRINSIC
+
6
]
=
imask
[
NINTRINSIC
+
7
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K1
)
if
(
flags
&
CALIB_FIX_K1
)
imask
[
4
]
=
imask
[
NINTRINSIC
+
4
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K2
)
if
(
flags
&
CALIB_FIX_K2
)
imask
[
5
]
=
imask
[
NINTRINSIC
+
5
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K3
)
if
(
flags
&
CALIB_FIX_K3
)
imask
[
8
]
=
imask
[
NINTRINSIC
+
8
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K4
)
if
(
flags
&
CALIB_FIX_K4
)
imask
[
9
]
=
imask
[
NINTRINSIC
+
9
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K5
)
if
(
flags
&
CALIB_FIX_K5
)
imask
[
10
]
=
imask
[
NINTRINSIC
+
10
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_K6
)
if
(
flags
&
CALIB_FIX_K6
)
imask
[
11
]
=
imask
[
NINTRINSIC
+
11
]
=
0
;
if
(
flags
&
C
V_C
ALIB_FIX_S1_S2_S3_S4
)
if
(
flags
&
CALIB_FIX_S1_S2_S3_S4
)
{
imask
[
12
]
=
imask
[
NINTRINSIC
+
12
]
=
0
;
imask
[
13
]
=
imask
[
NINTRINSIC
+
13
]
=
0
;
imask
[
14
]
=
imask
[
NINTRINSIC
+
14
]
=
0
;
imask
[
15
]
=
imask
[
NINTRINSIC
+
15
]
=
0
;
}
if
(
flags
&
C
V_C
ALIB_FIX_TAUX_TAUY
)
if
(
flags
&
CALIB_FIX_TAUX_TAUY
)
{
imask
[
16
]
=
imask
[
NINTRINSIC
+
16
]
=
0
;
imask
[
17
]
=
imask
[
NINTRINSIC
+
17
]
=
0
;
...
...
@@ -1979,7 +1981,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1
for
(
k
=
0
;
k
<
2
;
k
++
)
{
double
*
iparam
=
solver
.
param
->
data
.
db
+
(
nimages
+
1
)
*
6
+
k
*
NINTRINSIC
;
if
(
flags
&
C
V_C
ALIB_ZERO_TANGENT_DIST
)
if
(
flags
&
CALIB_ZERO_TANGENT_DIST
)
dk
[
k
][
2
]
=
dk
[
k
][
3
]
=
0
;
iparam
[
0
]
=
A
[
k
][
0
];
iparam
[
1
]
=
A
[
k
][
4
];
iparam
[
2
]
=
A
[
k
][
2
];
iparam
[
3
]
=
A
[
k
][
5
];
iparam
[
4
]
=
dk
[
k
][
0
];
iparam
[
5
]
=
dk
[
k
][
1
];
iparam
[
6
]
=
dk
[
k
][
2
];
...
...
@@ -2029,14 +2031,14 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1
dpdf
=
&
dpdf_hdr
;
dpdc
=
&
dpdc_hdr
;
dpdk
=
&
dpdk_hdr
;
if
(
flags
&
C
V_C
ALIB_SAME_FOCAL_LENGTH
)
if
(
flags
&
CALIB_SAME_FOCAL_LENGTH
)
{
iparam
[
NINTRINSIC
]
=
iparam
[
0
];
iparam
[
NINTRINSIC
+
1
]
=
iparam
[
1
];
ipparam
[
NINTRINSIC
]
=
ipparam
[
0
];
ipparam
[
NINTRINSIC
+
1
]
=
ipparam
[
1
];
}
if
(
flags
&
C
V_C
ALIB_FIX_ASPECT_RATIO
)
if
(
flags
&
CALIB_FIX_ASPECT_RATIO
)
{
iparam
[
0
]
=
iparam
[
1
]
*
aspectRatio
[
0
];
iparam
[
NINTRINSIC
]
=
iparam
[
NINTRINSIC
+
1
]
*
aspectRatio
[
1
];
...
...
@@ -2098,7 +2100,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1
if
(
JtJ
||
JtErr
)
cvProjectPoints2
(
&
objpt_i
,
&
om
[
k
],
&
T
[
k
],
&
K
[
k
],
&
Dist
[
k
],
&
tmpimagePoints
,
dpdrot
,
dpdt
,
dpdf
,
dpdc
,
dpdk
,
(
flags
&
C
V_C
ALIB_FIX_ASPECT_RATIO
)
?
aspectRatio
[
k
]
:
0
);
(
flags
&
CALIB_FIX_ASPECT_RATIO
)
?
aspectRatio
[
k
]
:
0
);
else
cvProjectPoints2
(
&
objpt_i
,
&
om
[
k
],
&
T
[
k
],
&
K
[
k
],
&
Dist
[
k
],
&
tmpimagePoints
);
cvSub
(
&
tmpimagePoints
,
&
imgpt_i
[
k
],
&
tmpimagePoints
);
...
...
@@ -2374,7 +2376,7 @@ void cvStereoRectify( const CvMat* _cameraMatrix1, const CvMat* _cameraMatrix2,
// For simplicity, set the principal points for both cameras to be the average
// of the two principal points (either one of or both x- and y- coordinates)
if
(
flags
&
C
V_C
ALIB_ZERO_DISPARITY
)
if
(
flags
&
CALIB_ZERO_DISPARITY
)
{
cc_new
[
0
].
x
=
cc_new
[
1
].
x
=
(
cc_new
[
0
].
x
+
cc_new
[
1
].
x
)
*
0.5
;
cc_new
[
0
].
y
=
cc_new
[
1
].
y
=
(
cc_new
[
0
].
y
+
cc_new
[
1
].
y
)
*
0.5
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录