Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
5ef58a47
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
5ef58a47
编写于
2月 01, 2013
作者:
A
Andrey Kamaev
提交者:
OpenCV Buildbot
2月 01, 2013
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #397 from ilysenkov:bugfix_2677
上级
0b6677f6
098ea6fc
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
126 addition
and
4 deletion
+126
-4
modules/flann/include/opencv2/flann/lsh_table.h
modules/flann/include/opencv2/flann/lsh_table.h
+14
-4
modules/flann/test/test_lshtable_badarg.cpp
modules/flann/test/test_lshtable_badarg.cpp
+91
-0
modules/flann/test/test_main.cpp
modules/flann/test/test_main.cpp
+3
-0
modules/flann/test/test_precomp.cpp
modules/flann/test/test_precomp.cpp
+1
-0
modules/flann/test/test_precomp.hpp
modules/flann/test/test_precomp.hpp
+17
-0
未找到文件。
modules/flann/include/opencv2/flann/lsh_table.h
浏览文件 @
5ef58a47
...
...
@@ -261,6 +261,16 @@ private:
*/
void
initialize
(
size_t
key_size
)
{
const
size_t
key_size_lower_bound
=
1
;
//a value (size_t(1) << key_size) must fit the size_t type so key_size has to be strictly less than size of size_t
const
size_t
key_size_upper_bound
=
std
::
min
(
sizeof
(
BucketKey
)
*
CHAR_BIT
+
1
,
sizeof
(
size_t
)
*
CHAR_BIT
);
if
(
key_size
<
key_size_lower_bound
||
key_size
>=
key_size_upper_bound
)
{
std
::
stringstream
errorMessage
;
errorMessage
<<
"Invalid key_size (="
<<
key_size
<<
"). Valid values for your system are "
<<
key_size_lower_bound
<<
" <= key_size < "
<<
key_size_upper_bound
<<
"."
;
CV_Error
(
CV_StsBadArg
,
errorMessage
.
str
());
}
speed_level_
=
kHash
;
key_size_
=
(
unsigned
)
key_size
;
}
...
...
@@ -273,10 +283,10 @@ private:
if
(
speed_level_
==
kArray
)
return
;
// Use an array if it will be more than half full
if
(
buckets_space_
.
size
()
>
(
unsigned
int
)((
1
<<
key_size_
)
/
2
))
{
if
(
buckets_space_
.
size
()
>
(
(
size_t
(
1
)
<<
key_size_
)
/
2
))
{
speed_level_
=
kArray
;
// Fill the array version of it
buckets_speed_
.
resize
(
1
<<
key_size_
);
buckets_speed_
.
resize
(
size_t
(
1
)
<<
key_size_
);
for
(
BucketsSpace
::
const_iterator
key_bucket
=
buckets_space_
.
begin
();
key_bucket
!=
buckets_space_
.
end
();
++
key_bucket
)
buckets_speed_
[
key_bucket
->
first
]
=
key_bucket
->
second
;
// Empty the hash table
...
...
@@ -287,9 +297,9 @@ private:
// If the bitset is going to use less than 10% of the RAM of the hash map (at least 1 size_t for the key and two
// for the vector) or less than 512MB (key_size_ <= 30)
if
(((
std
::
max
(
buckets_space_
.
size
(),
buckets_speed_
.
size
())
*
CHAR_BIT
*
3
*
sizeof
(
BucketKey
))
/
10
>=
size_t
(
1
<<
key_size_
))
||
(
key_size_
<=
32
))
{
>=
(
size_t
(
1
)
<<
key_size_
))
||
(
key_size_
<=
32
))
{
speed_level_
=
kBitsetHash
;
key_bitset_
.
resize
(
1
<<
key_size_
);
key_bitset_
.
resize
(
size_t
(
1
)
<<
key_size_
);
key_bitset_
.
reset
();
// Try with the BucketsSpace
for
(
BucketsSpace
::
const_iterator
key_bucket
=
buckets_space_
.
begin
();
key_bucket
!=
buckets_space_
.
end
();
++
key_bucket
)
key_bitset_
.
set
(
key_bucket
->
first
);
...
...
modules/flann/test/test_lshtable_badarg.cpp
0 → 100644
浏览文件 @
5ef58a47
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// Intel License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of Intel Corporation may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "test_precomp.hpp"
using
namespace
cv
;
class
CV_LshTableBadArgTest
:
public
cvtest
::
BadArgTest
{
protected:
void
run
(
int
);
void
run_func
(
void
)
{};
struct
Caller
{
int
table_number
,
key_size
,
multi_probe_level
;
Mat
features
;
void
operator
()()
const
{
flann
::
LshIndexParams
indexParams
(
table_number
,
key_size
,
multi_probe_level
);
flann
::
Index
lsh
(
features
,
indexParams
);
}
};
};
void
CV_LshTableBadArgTest
::
run
(
int
/* start_from */
)
{
RNG
&
rng
=
ts
->
get_rng
();
Caller
caller
;
Size
featuresSize
=
cvtest
::
randomSize
(
rng
,
10.0
);
caller
.
features
=
cvtest
::
randomMat
(
rng
,
featuresSize
,
CV_8UC1
,
0
,
255
,
false
);
caller
.
table_number
=
12
;
caller
.
multi_probe_level
=
2
;
int
errors
=
0
;
caller
.
key_size
=
0
;
errors
+=
run_test_case
(
CV_StsBadArg
,
"key_size is zero"
,
caller
);
caller
.
key_size
=
static_cast
<
int
>
(
sizeof
(
size_t
)
*
CHAR_BIT
);
errors
+=
run_test_case
(
CV_StsBadArg
,
"key_size is too big"
,
caller
);
caller
.
key_size
+=
cvtest
::
randInt
(
rng
)
%
100
;
errors
+=
run_test_case
(
CV_StsBadArg
,
"key_size is too big"
,
caller
);
if
(
errors
!=
0
)
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_MISMATCH
);
else
ts
->
set_failed_test_info
(
cvtest
::
TS
::
OK
);
}
TEST
(
Flann_LshTable
,
badarg
)
{
CV_LshTableBadArgTest
test
;
test
.
safe_run
();
}
modules/flann/test/test_main.cpp
0 → 100644
浏览文件 @
5ef58a47
#include "test_precomp.hpp"
CV_TEST_MAIN
(
"cv"
)
modules/flann/test/test_precomp.cpp
0 → 100644
浏览文件 @
5ef58a47
#include "test_precomp.hpp"
modules/flann/test/test_precomp.hpp
0 → 100644
浏览文件 @
5ef58a47
#ifdef __GNUC__
# pragma GCC diagnostic ignored "-Wmissing-declarations"
# if defined __clang__ || defined __APPLE__
# pragma GCC diagnostic ignored "-Wmissing-prototypes"
# pragma GCC diagnostic ignored "-Wextra"
# endif
#endif
#ifndef __OPENCV_TEST_PRECOMP_HPP__
#define __OPENCV_TEST_PRECOMP_HPP__
#include "opencv2/ts/ts.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/flann.hpp"
#include <iostream>
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录