Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
def67955
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,发现更多精彩内容 >>
提交
def67955
编写于
12月 11, 2020
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19084 from alalek:issue_16197
上级
08b6abd7
f290ff21
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
5 deletion
+29
-5
modules/features2d/src/orb.cpp
modules/features2d/src/orb.cpp
+9
-4
modules/features2d/test/test_orb.cpp
modules/features2d/test/test_orb.cpp
+20
-1
未找到文件。
modules/features2d/src/orb.cpp
浏览文件 @
def67955
...
@@ -1025,15 +1025,20 @@ void ORB_Impl::detectAndCompute( InputArray _image, InputArray _mask,
...
@@ -1025,15 +1025,20 @@ void ORB_Impl::detectAndCompute( InputArray _image, InputArray _mask,
Mat
imagePyramid
,
maskPyramid
;
Mat
imagePyramid
,
maskPyramid
;
UMat
uimagePyramid
,
ulayerInfo
;
UMat
uimagePyramid
,
ulayerInfo
;
int
level_dy
=
image
.
rows
+
border
*
2
;
float
level0_inv_scale
=
1.0
f
/
getScale
(
0
,
firstLevel
,
scaleFactor
);
Point
level_ofs
(
0
,
0
);
size_t
level0_width
=
(
size_t
)
cvRound
(
image
.
cols
*
level0_inv_scale
);
Size
bufSize
((
cvRound
(
image
.
cols
/
getScale
(
0
,
firstLevel
,
scaleFactor
))
+
border
*
2
+
15
)
&
-
16
,
0
);
size_t
level0_height
=
(
size_t
)
cvRound
(
image
.
rows
*
level0_inv_scale
);
Size
bufSize
((
int
)
alignSize
(
level0_width
+
border
*
2
,
16
),
0
);
// TODO change alignment to 64
int
level_dy
=
(
int
)
level0_height
+
border
*
2
;
Point
level_ofs
(
0
,
0
);
for
(
level
=
0
;
level
<
nLevels
;
level
++
)
for
(
level
=
0
;
level
<
nLevels
;
level
++
)
{
{
float
scale
=
getScale
(
level
,
firstLevel
,
scaleFactor
);
float
scale
=
getScale
(
level
,
firstLevel
,
scaleFactor
);
layerScale
[
level
]
=
scale
;
layerScale
[
level
]
=
scale
;
Size
sz
(
cvRound
(
image
.
cols
/
scale
),
cvRound
(
image
.
rows
/
scale
));
float
inv_scale
=
1.0
f
/
scale
;
Size
sz
(
cvRound
(
image
.
cols
*
inv_scale
),
cvRound
(
image
.
rows
*
inv_scale
));
Size
wholeSize
(
sz
.
width
+
border
*
2
,
sz
.
height
+
border
*
2
);
Size
wholeSize
(
sz
.
width
+
border
*
2
,
sz
.
height
+
border
*
2
);
if
(
level_ofs
.
x
+
wholeSize
.
width
>
bufSize
.
width
)
if
(
level_ofs
.
x
+
wholeSize
.
width
>
bufSize
.
width
)
{
{
...
...
modules/features2d/test/test_orb.cpp
浏览文件 @
def67955
...
@@ -90,7 +90,7 @@ TEST(Features2D_ORB, _1996)
...
@@ -90,7 +90,7 @@ TEST(Features2D_ORB, _1996)
ASSERT_EQ
(
0
,
roiViolations
);
ASSERT_EQ
(
0
,
roiViolations
);
}
}
TEST
(
Features2D_ORB
,
crash
)
TEST
(
Features2D_ORB
,
crash
_5031
)
{
{
cv
::
Mat
image
=
cv
::
Mat
::
zeros
(
cv
::
Size
(
1920
,
1080
),
CV_8UC3
);
cv
::
Mat
image
=
cv
::
Mat
::
zeros
(
cv
::
Size
(
1920
,
1080
),
CV_8UC3
);
...
@@ -123,4 +123,23 @@ TEST(Features2D_ORB, crash)
...
@@ -123,4 +123,23 @@ TEST(Features2D_ORB, crash)
ASSERT_NO_THROW
(
orb
->
compute
(
image
,
keypoints
,
descriptors
));
ASSERT_NO_THROW
(
orb
->
compute
(
image
,
keypoints
,
descriptors
));
}
}
TEST
(
Features2D_ORB
,
regression_16197
)
{
Mat
img
(
Size
(
72
,
72
),
CV_8UC1
,
Scalar
::
all
(
0
));
Ptr
<
ORB
>
orbPtr
=
ORB
::
create
();
orbPtr
->
setNLevels
(
5
);
orbPtr
->
setFirstLevel
(
3
);
orbPtr
->
setScaleFactor
(
1.8
);
orbPtr
->
setPatchSize
(
8
);
orbPtr
->
setEdgeThreshold
(
8
);
std
::
vector
<
KeyPoint
>
kps
;
Mat
fv
;
// exception in debug mode, crash in release
ASSERT_NO_THROW
(
orbPtr
->
detectAndCompute
(
img
,
noArray
(),
kps
,
fv
));
}
}}
// namespace
}}
// namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录