Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
c6a15e18
O
Opencv
项目概览
Greenplum
/
Opencv
10 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
c6a15e18
编写于
12月 21, 2022
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
aruco(cleanup): don't use Ptr<FileStorage>
上级
91ac7902
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
80 addition
and
99 deletion
+80
-99
modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp
...es/objdetect/include/opencv2/objdetect/aruco_detector.hpp
+3
-11
modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
.../objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
+1
-5
modules/objdetect/src/aruco/aruco_detector.cpp
modules/objdetect/src/aruco/aruco_detector.cpp
+61
-71
modules/objdetect/src/aruco/aruco_dictionary.cpp
modules/objdetect/src/aruco/aruco_dictionary.cpp
+9
-8
modules/objdetect/src/aruco/aruco_utils.hpp
modules/objdetect/src/aruco/aruco_utils.hpp
+6
-4
未找到文件。
modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp
浏览文件 @
c6a15e18
...
...
@@ -85,11 +85,7 @@ struct CV_EXPORTS_W_SIMPLE DetectorParameters {
/** @brief Write a set of DetectorParameters to FileStorage
*/
bool
writeDetectorParameters
(
FileStorage
&
fs
);
/** @brief simplified API for language bindings
*/
CV_WRAP
bool
writeDetectorParameters
(
const
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
=
String
());
CV_WRAP
bool
writeDetectorParameters
(
FileStorage
&
fs
,
const
String
&
name
=
String
());
/// minimum window size for adaptive thresholding before finding contours (default 3).
CV_PROP_RW
int
adaptiveThreshWinSizeMin
;
...
...
@@ -237,11 +233,7 @@ struct CV_EXPORTS_W_SIMPLE RefineParameters {
/** @brief Write a set of RefineParameters to FileStorage
*/
bool
writeRefineParameters
(
FileStorage
&
fs
);
/** @brief simplified API for language bindings
*/
CV_WRAP
bool
writeRefineParameters
(
const
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
=
String
());
CV_WRAP
bool
writeRefineParameters
(
FileStorage
&
fs
,
const
String
&
name
=
String
());
/** @brief minRepDistance minimum distance between the corners of the rejected candidate and the reprojected marker
in order to consider it as a correspondence.
...
...
@@ -347,7 +339,7 @@ public:
/** @brief simplified API for language bindings
*/
CV_WRAP
inline
void
write
(
const
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
=
String
()
)
{
Algorithm
::
write
(
fs
,
name
);
}
CV_WRAP
inline
void
write
(
FileStorage
&
fs
,
const
String
&
name
)
{
Algorithm
::
write
(
fs
,
name
);
}
/** @brief Reads algorithm parameters from a file storage
*/
...
...
modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
浏览文件 @
c6a15e18
...
...
@@ -50,11 +50,7 @@ class CV_EXPORTS_W_SIMPLE Dictionary {
/** @brief Write a dictionary to FileStorage, format is the same as in readDictionary().
*/
void
writeDictionary
(
FileStorage
&
fs
);
/** @brief simplified API for language bindings
*/
CV_WRAP
void
writeDictionary
(
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
=
String
());
CV_WRAP
void
writeDictionary
(
FileStorage
&
fs
,
const
String
&
name
=
String
());
/** @brief Given a matrix of bits. Returns whether if marker is identified or not.
*
...
...
modules/objdetect/src/aruco/aruco_detector.cpp
浏览文件 @
c6a15e18
...
...
@@ -16,77 +16,73 @@ namespace aruco {
using
namespace
std
;
static
inline
bool
readWrite
(
DetectorParameters
&
params
,
const
Ptr
<
FileNode
>&
readNode
,
const
Ptr
<
FileStorage
>&
writeStorage
=
nullptr
)
{
CV_Assert
(
!
readNode
.
empty
()
||
!
writeStorage
.
empty
());
static
inline
bool
readWrite
(
DetectorParameters
&
params
,
const
FileNode
*
readNode
,
FileStorage
*
writeStorage
=
nullptr
)
{
CV_Assert
(
readNode
||
writeStorage
);
bool
check
=
false
;
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeMin"
,
params
.
adaptiveThreshWinSizeMin
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeMax"
,
params
.
adaptiveThreshWinSizeMax
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeStep"
,
params
.
adaptiveThreshWinSizeStep
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshConstant"
,
params
.
adaptiveThreshConstant
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minMarkerPerimeterRate"
,
params
.
minMarkerPerimeterRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"maxMarkerPerimeterRate"
,
params
.
maxMarkerPerimeterRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeMin"
,
params
.
adaptiveThreshWinSizeMin
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeMax"
,
params
.
adaptiveThreshWinSizeMax
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshWinSizeStep"
,
params
.
adaptiveThreshWinSizeStep
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"adaptiveThreshConstant"
,
params
.
adaptiveThreshConstant
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minMarkerPerimeterRate"
,
params
.
minMarkerPerimeterRate
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"maxMarkerPerimeterRate"
,
params
.
maxMarkerPerimeterRate
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"polygonalApproxAccuracyRate"
,
params
.
polygonalApproxAccuracyRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minCornerDistanceRate"
,
params
.
minCornerDistanceRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minDistanceToBorder"
,
params
.
minDistanceToBorder
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minMarkerDistanceRate"
,
params
.
minMarkerDistanceRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementMethod"
,
params
.
cornerRefinementMethod
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementWinSize"
,
params
.
cornerRefinementWinSize
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minCornerDistanceRate"
,
params
.
minCornerDistanceRate
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minDistanceToBorder"
,
params
.
minDistanceToBorder
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minMarkerDistanceRate"
,
params
.
minMarkerDistanceRate
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementMethod"
,
params
.
cornerRefinementMethod
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementWinSize"
,
params
.
cornerRefinementWinSize
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementMaxIterations"
,
params
.
cornerRefinementMaxIterations
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"cornerRefinementMinAccuracy"
,
params
.
cornerRefinementMinAccuracy
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"markerBorderBits"
,
params
.
markerBorderBits
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"markerBorderBits"
,
params
.
markerBorderBits
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"perspectiveRemovePixelPerCell"
,
params
.
perspectiveRemovePixelPerCell
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"perspectiveRemoveIgnoredMarginPerCell"
,
params
.
perspectiveRemoveIgnoredMarginPerCell
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"maxErroneousBitsInBorderRate"
,
params
.
maxErroneousBitsInBorderRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minOtsuStdDev"
,
params
.
minOtsuStdDev
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"errorCorrectionRate"
,
params
.
errorCorrectionRate
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minOtsuStdDev"
,
params
.
minOtsuStdDev
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"errorCorrectionRate"
,
params
.
errorCorrectionRate
,
readNode
,
writeStorage
);
// new aruco 3 functionality
check
|=
readWriteParameter
(
"useAruco3Detection"
,
params
.
useAruco3Detection
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minSideLengthCanonicalImg"
,
params
.
minSideLengthCanonicalImg
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"useAruco3Detection"
,
params
.
useAruco3Detection
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minSideLengthCanonicalImg"
,
params
.
minSideLengthCanonicalImg
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"minMarkerLengthRatioOriginalImg"
,
params
.
minMarkerLengthRatioOriginalImg
,
*
readNode
,
*
writeStorage
);
readNode
,
writeStorage
);
return
check
;
}
bool
DetectorParameters
::
readDetectorParameters
(
const
FileNode
&
fn
)
{
if
(
fn
.
empty
())
bool
DetectorParameters
::
readDetectorParameters
(
const
FileNode
&
fn
)
{
if
(
fn
.
empty
())
return
false
;
Ptr
<
FileNode
>
pfn
=
makePtr
<
FileNode
>
(
fn
);
return
readWrite
(
*
this
,
pfn
);
return
readWrite
(
*
this
,
&
fn
);
}
bool
DetectorParameters
::
writeDetectorParameters
(
const
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
)
{
if
(
fs
.
empty
())
return
false
;
if
(
name
.
empty
())
return
writeDetectorParameters
(
*
fs
)
;
*
fs
<<
name
<<
"{"
;
bool
res
=
writeDetectorParameters
(
*
fs
);
*
fs
<<
"}"
;
bool
DetectorParameters
::
writeDetectorParameters
(
FileStorage
&
fs
,
const
String
&
name
)
{
CV_Assert
(
fs
.
isOpened
())
;
if
(
!
name
.
empty
())
fs
<<
name
<<
"{"
;
bool
res
=
readWrite
(
*
this
,
nullptr
,
&
fs
)
;
if
(
!
name
.
empty
())
fs
<<
"}"
;
return
res
;
}
bool
DetectorParameters
::
writeDetectorParameters
(
FileStorage
&
fs
)
{
if
(
!
fs
.
isOpened
())
return
false
;
return
readWrite
(
*
this
,
nullptr
,
makePtr
<
FileStorage
>
(
fs
));
}
static
inline
bool
readWrite
(
RefineParameters
&
refineParameters
,
const
Ptr
<
FileNode
>&
readNode
,
const
Ptr
<
FileStorage
>&
writeStorage
=
nullptr
)
{
CV_Assert
(
!
readNode
.
empty
()
||
!
writeStorage
.
empty
());
static
inline
bool
readWrite
(
RefineParameters
&
refineParameters
,
const
FileNode
*
readNode
,
FileStorage
*
writeStorage
=
nullptr
)
{
CV_Assert
(
readNode
||
writeStorage
);
bool
check
=
false
;
check
|=
readWriteParameter
(
"minRepDistance"
,
refineParameters
.
minRepDistance
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"errorCorrectionRate"
,
refineParameters
.
errorCorrectionRate
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"checkAllOrders"
,
refineParameters
.
checkAllOrders
,
*
readNode
,
*
writeStorage
);
check
|=
readWriteParameter
(
"minRepDistance"
,
refineParameters
.
minRepDistance
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"errorCorrectionRate"
,
refineParameters
.
errorCorrectionRate
,
readNode
,
writeStorage
);
check
|=
readWriteParameter
(
"checkAllOrders"
,
refineParameters
.
checkAllOrders
,
readNode
,
writeStorage
);
return
check
;
}
...
...
@@ -94,27 +90,21 @@ RefineParameters::RefineParameters(float _minRepDistance, float _errorCorrection
minRepDistance
(
_minRepDistance
),
errorCorrectionRate
(
_errorCorrectionRate
),
checkAllOrders
(
_checkAllOrders
){}
bool
RefineParameters
::
readRefineParameters
(
const
FileNode
&
fn
)
{
if
(
fn
.
empty
())
bool
RefineParameters
::
readRefineParameters
(
const
FileNode
&
fn
)
{
if
(
fn
.
empty
())
return
false
;
Ptr
<
FileNode
>
pfn
=
makePtr
<
FileNode
>
(
fn
);
return
readWrite
(
*
this
,
pfn
);
return
readWrite
(
*
this
,
&
fn
);
}
bool
RefineParameters
::
writeRefineParameters
(
FileStorage
&
fs
)
{
if
(
!
fs
.
isOpened
())
return
false
;
return
readWrite
(
*
this
,
nullptr
,
makePtr
<
FileStorage
>
(
fs
));
}
bool
RefineParameters
::
writeRefineParameters
(
const
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
)
{
if
(
fs
.
empty
())
return
false
;
if
(
name
.
empty
())
return
writeRefineParameters
(
*
fs
);
*
fs
<<
name
<<
"{"
;
bool
res
=
writeRefineParameters
(
*
fs
);
*
fs
<<
"}"
;
bool
RefineParameters
::
writeRefineParameters
(
FileStorage
&
fs
,
const
String
&
name
)
{
CV_Assert
(
fs
.
isOpened
());
if
(
!
name
.
empty
())
fs
<<
name
<<
"{"
;
bool
res
=
readWrite
(
*
this
,
nullptr
,
&
fs
);
if
(
!
name
.
empty
())
fs
<<
"}"
;
return
res
;
}
...
...
@@ -1279,9 +1269,9 @@ void ArucoDetector::refineDetectedMarkers(InputArray _image, const Ptr<Board> &_
}
}
void
ArucoDetector
::
write
(
FileStorage
&
fs
)
const
{
Ptr
<
FileStorage
>
pfs
=
makePtr
<
FileStorage
>
(
fs
);
arucoDetectorImpl
->
dictionary
.
writeDictionary
(
p
fs
);
void
ArucoDetector
::
write
(
FileStorage
&
fs
)
const
{
arucoDetectorImpl
->
dictionary
.
writeDictionary
(
fs
);
arucoDetectorImpl
->
detectorParams
.
writeDetectorParameters
(
fs
);
arucoDetectorImpl
->
refineParams
.
writeRefineParameters
(
fs
);
}
...
...
modules/objdetect/src/aruco/aruco_dictionary.cpp
浏览文件 @
c6a15e18
...
...
@@ -46,7 +46,13 @@ bool Dictionary::readDictionary(const cv::FileNode& fn) {
return
true
;
}
void
Dictionary
::
writeDictionary
(
FileStorage
&
fs
)
{
void
Dictionary
::
writeDictionary
(
FileStorage
&
fs
,
const
String
&
name
)
{
CV_Assert
(
fs
.
isOpened
());
if
(
!
name
.
empty
())
fs
<<
name
<<
"{"
;
fs
<<
"nmarkers"
<<
bytesList
.
rows
;
fs
<<
"markersize"
<<
markerSize
;
fs
<<
"maxCorrectionBits"
<<
maxCorrectionBits
;
...
...
@@ -61,14 +67,9 @@ void Dictionary::writeDictionary(FileStorage &fs) {
marker
.
push_back
(
bitMarker
.
at
<
uint8_t
>
(
j
)
+
'0'
);
fs
<<
markerName
<<
marker
;
}
}
void
Dictionary
::
writeDictionary
(
Ptr
<
FileStorage
>&
fs
,
const
String
&
name
)
{
if
(
name
.
empty
())
return
writeDictionary
(
*
fs
);
*
fs
<<
name
<<
"{"
;
writeDictionary
(
*
fs
);
*
fs
<<
"}"
;
if
(
!
name
.
empty
())
fs
<<
"}"
;
}
...
...
modules/objdetect/src/aruco/aruco_utils.hpp
浏览文件 @
c6a15e18
...
...
@@ -31,10 +31,12 @@ inline bool readParameter(const std::string& name, T& parameter, const FileNode&
}
template
<
typename
T
>
inline
bool
readWriteParameter
(
const
std
::
string
&
name
,
T
&
parameter
,
const
FileNode
&
readNode
,
FileStorage
&
writeStorage
)
{
if
(
!
readNode
.
empty
())
return
readParameter
(
name
,
parameter
,
readNode
);
writeStorage
<<
name
<<
parameter
;
inline
bool
readWriteParameter
(
const
std
::
string
&
name
,
T
&
parameter
,
const
FileNode
*
readNode
,
FileStorage
*
writeStorage
)
{
if
(
readNode
)
return
readParameter
(
name
,
parameter
,
*
readNode
);
CV_Assert
(
writeStorage
);
*
writeStorage
<<
name
<<
parameter
;
return
true
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录