Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenCV
opencv
提交
a6e5ebaf
O
opencv
项目概览
OpenCV
/
opencv
上一次同步 9 个月
通知
992
Star
71100
Fork
55581
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a6e5ebaf
编写于
8月 31, 2016
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
calib3d: fix cornerSubPix memory error
上级
e5175dbc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
0 deletion
+25
-0
modules/calib3d/test/test_cornerssubpix.cpp
modules/calib3d/test/test_cornerssubpix.cpp
+14
-0
modules/imgproc/src/cornersubpix.cpp
modules/imgproc/src/cornersubpix.cpp
+9
-0
modules/imgproc/src/samplers.cpp
modules/imgproc/src/samplers.cpp
+2
-0
未找到文件。
modules/calib3d/test/test_cornerssubpix.cpp
浏览文件 @
a6e5ebaf
...
...
@@ -239,4 +239,18 @@ void CV_ChessboardSubpixelTest::generateIntrinsicParams()
TEST
(
Calib3d_ChessboardSubPixDetector
,
accuracy
)
{
CV_ChessboardSubpixelTest
test
;
test
.
safe_run
();
}
TEST
(
Calib3d_CornerSubPix
,
regression_7204
)
{
cv
::
Mat
image
(
cv
::
Size
(
70
,
38
),
CV_8UC1
,
cv
::
Scalar
::
all
(
0
));
image
(
cv
::
Rect
(
65
,
26
,
5
,
5
)).
setTo
(
cv
::
Scalar
::
all
(
255
));
image
(
cv
::
Rect
(
55
,
31
,
8
,
1
)).
setTo
(
cv
::
Scalar
::
all
(
255
));
image
(
cv
::
Rect
(
56
,
35
,
14
,
2
)).
setTo
(
cv
::
Scalar
::
all
(
255
));
image
(
cv
::
Rect
(
66
,
24
,
4
,
2
)).
setTo
(
cv
::
Scalar
::
all
(
255
));
image
.
at
<
uchar
>
(
24
,
69
)
=
0
;
std
::
vector
<
cv
::
Point2f
>
corners
;
corners
.
push_back
(
cv
::
Point2f
(
65
,
30
));
cv
::
cornerSubPix
(
image
,
corners
,
cv
::
Size
(
3
,
3
),
cv
::
Size
(
-
1
,
-
1
),
cv
::
TermCriteria
(
CV_TERMCRIT_EPS
+
CV_TERMCRIT_ITER
,
30
,
0.1
));
}
/* End of file. */
modules/imgproc/src/cornersubpix.cpp
浏览文件 @
a6e5ebaf
...
...
@@ -234,6 +234,15 @@ cvFindCornerSubPix( const void* srcarr, CvPoint2D32f* corners,
err
=
(
cI2
.
x
-
cI
.
x
)
*
(
cI2
.
x
-
cI
.
x
)
+
(
cI2
.
y
-
cI
.
y
)
*
(
cI2
.
y
-
cI
.
y
);
cI
=
cI2
;
/* if new point is too far from initial, it means poor convergence. */
if
(
fabs
(
cI
.
x
-
cT
.
x
)
>
win
.
width
||
fabs
(
cI
.
y
-
cT
.
y
)
>
win
.
height
)
{
cI
=
cT
;
break
;
}
cI
.
x
=
std
::
max
(
0.0
f
,
std
::
min
((
float
)
size
.
width
,
cI
.
x
));
cI
.
y
=
std
::
max
(
0.0
f
,
std
::
min
((
float
)
size
.
height
,
cI
.
y
));
}
while
(
++
iter
<
max_iters
&&
err
>
eps
);
...
...
modules/imgproc/src/samplers.cpp
浏览文件 @
a6e5ebaf
...
...
@@ -392,6 +392,8 @@ CvStatus CV_STDCALL icvGetRectSubPix_8u32f_C1R
ip
.
x
=
cvFloor
(
center
.
x
);
ip
.
y
=
cvFloor
(
center
.
y
);
CV_DbgAssert
(
fabs
(
center
.
x
-
ip
.
x
)
<=
1.0
f
&&
fabs
(
center
.
y
-
ip
.
y
)
<=
1.0
f
);
if
(
win_size
.
width
<=
0
||
win_size
.
height
<=
0
)
return
CV_BADRANGE_ERR
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录