Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
17cd1dac
Commit
17cd1dac
authored
Mar 01, 2016
by
Maksim Shabunin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HAL Filter2D interface: Updated according to comments
parent
85b2c2ae
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
77 additions
and
144 deletions
+77
-144
hal.hpp
modules/imgproc/include/opencv2/imgproc/hal/hal.hpp
+20
-32
filter.cpp
modules/imgproc/src/filter.cpp
+49
-106
hal_replacement.hpp
modules/imgproc/src/hal_replacement.hpp
+8
-6
No files found.
modules/imgproc/include/opencv2/imgproc/hal/hal.hpp
View file @
17cd1dac
...
...
@@ -2,6 +2,7 @@
#define CV_IMGPROC_HAL_HPP
#include "opencv2/core/cvdef.h"
#include "opencv2/core/cvstd.hpp"
#include "opencv2/core/hal/interface.h"
namespace
cv
{
namespace
hal
{
...
...
@@ -9,42 +10,29 @@ namespace cv { namespace hal {
//! @addtogroup core_hal_functions
//! @{
struct
FilterContext
struct
CV_EXPORTS
Filter2D
{
void
*
impl
;
FilterContext
()
:
impl
(
0
)
{}
};
CV_EXPORTS
void
init_filter2d
(
FilterContext
&
c
,
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
static
Ptr
<
hal
::
Filter2D
>
createFilter2D
(
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
int
kernel_width
,
int
kernel_height
,
int
max_width
,
int
max_height
,
int
stype
,
int
dtype
,
int
borderType
,
double
delta
,
int
anchor_x
,
int
anchor_y
,
bool
isSubmatrix
,
bool
isInplace
);
CV_EXPORTS
void
filter2d
(
FilterContext
&
c
,
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
);
CV_EXPORTS
void
free_filter2d
(
FilterContext
&
c
);
CV_EXPORTS
void
init_sepFilter2d
(
FilterContext
&
c
,
int
stype
,
int
dtype
,
int
ktype
,
uchar
*
kernelx_data
,
size_t
kernelx_step
,
int
kernelx_width
,
int
kernelx_height
,
uchar
*
kernely_data
,
size_t
kernely_step
,
int
kernely_width
,
int
kernely_height
,
int
anchor_x
,
int
anchor_y
,
double
delta
,
int
borderType
);
CV_EXPORTS
void
sepFilter2d
(
FilterContext
&
c
,
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
);
CV_EXPORTS
void
free_sepFilter2d
(
FilterContext
&
c
);
int
borderType
,
double
delta
,
int
anchor_x
,
int
anchor_y
,
bool
isSubmatrix
,
bool
isInplace
);
static
Ptr
<
hal
::
Filter2D
>
createSepFilter2D
(
int
stype
,
int
dtype
,
int
ktype
,
uchar
*
kernelx_data
,
size_t
kernelx_step
,
int
kernelx_width
,
int
kernelx_height
,
uchar
*
kernely_data
,
size_t
kernely_step
,
int
kernely_width
,
int
kernely_height
,
int
anchor_x
,
int
anchor_y
,
double
delta
,
int
borderType
);
virtual
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
=
0
;
virtual
~
Filter2D
()
{}
};
//! @}
...
...
modules/imgproc/src/filter.cpp
View file @
17cd1dac
...
...
@@ -4535,43 +4535,38 @@ cv::Ptr<cv::FilterEngine> cv::createLinearFilter( int _srcType, int _dstType,
using
namespace
cv
;
class
HalFilterImpl
struct
ReplacementFilter
:
public
hal
::
Filter2D
{
public
:
virtual
~
HalFilterImpl
()
{}
virtual
bool
init
(
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
int
kernel_width
,
int
kernel_height
,
int
max_width
,
int
max_height
,
int
stype
,
int
dtype
,
int
borderType
,
double
delta
,
int
anchor_x
,
int
anchor_y
,
bool
isSubmatrix
,
bool
isInplace
)
=
0
;
virtual
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
=
0
;
virtual
void
free
()
{}
};
struct
ReplacementFilter
:
public
HalFilterImpl
{
void
*
ctx
;
ReplacementFilter
()
:
ctx
(
0
)
{
}
cvhalFilter2D
*
ctx
;
bool
isInitialized
;
ReplacementFilter
()
:
ctx
(
0
),
isInitialized
(
false
)
{
}
bool
init
(
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
int
kernel_width
,
int
kernel_height
,
int
max_width
,
int
max_height
,
int
stype
,
int
dtype
,
int
borderType
,
double
delta
,
int
anchor_x
,
int
anchor_y
,
bool
isSubmatrix
,
bool
isInplace
)
{
int
res
=
cv_hal_filterInit
(
&
ctx
,
kernel_data
,
kernel_step
,
kernel_type
,
kernel_width
,
kernel_height
,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
);
if
(
res
==
CV_HAL_ERROR_OK
)
return
true
;
return
false
;
isInitialized
=
(
res
==
CV_HAL_ERROR_OK
);
return
isInitialized
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
if
(
isInitialized
)
{
int
res
=
cv_hal_filter
(
ctx
,
src_data
,
src_step
,
dst_data
,
dst_step
,
width
,
height
,
full_width
,
full_height
,
offset_x
,
offset_y
);
if
(
res
!=
CV_HAL_ERROR_OK
)
CV_Error
(
Error
::
StsNotImplemented
,
"HAL Filter returned an error"
);
}
void
free
()
}
~
ReplacementFilter
()
{
if
(
isInitialized
)
{
int
res
=
cv_hal_filterFree
(
ctx
);
if
(
res
!=
CV_HAL_ERROR_OK
)
CV_Error
(
Error
::
StsNotImplemented
,
"HAL Filter Free returned an error"
);
}
}
};
#ifdef HAVE_IPP
...
...
@@ -4645,7 +4640,7 @@ struct IppFilterTrait<CV_32F>
};
template
<
int
kdepth
>
struct
IppFilter
:
public
HalFilterImpl
struct
IppFilter
:
public
hal
::
Filter2D
{
typedef
IppFilterTrait
<
kdepth
>
trait
;
typedef
typename
trait
::
kernel_type
kernel_type
;
...
...
@@ -4723,7 +4718,7 @@ struct IppFilter : public HalFilterImpl
return
false
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
,
int
,
int
,
int
)
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
,
int
,
int
,
int
)
{
if
(
dst_data
==
src_data
)
CV_Error
(
Error
::
StsBadArg
,
"Inplace IPP Filter2D is not supported"
);
...
...
@@ -4739,7 +4734,7 @@ struct IppFilter : public HalFilterImpl
#endif
#endif
struct
DftFilter
:
public
HalFilterImpl
struct
DftFilter
:
public
hal
::
Filter2D
{
int
src_type
;
int
dst_type
;
...
...
@@ -4777,7 +4772,7 @@ struct DftFilter : public HalFilterImpl
return
false
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
,
int
,
int
,
int
)
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
,
int
,
int
,
int
)
{
Mat
src
(
Size
(
width
,
height
),
src_type
,
src_data
,
src_step
);
Mat
dst
(
Size
(
width
,
height
),
dst_type
,
dst_data
,
dst_step
);
...
...
@@ -4819,7 +4814,7 @@ struct DftFilter : public HalFilterImpl
}
};
struct
OcvFilter
:
public
HalFilterImpl
struct
OcvFilter
:
public
hal
::
Filter2D
{
Ptr
<
FilterEngine
>
f
;
int
src_type
;
...
...
@@ -4839,7 +4834,7 @@ struct OcvFilter : public HalFilterImpl
borderTypeValue
);
return
true
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
Mat
src
(
Size
(
width
,
height
),
src_type
,
src_data
,
src_step
);
Mat
dst
(
Size
(
width
,
height
),
dst_type
,
dst_data
,
dst_step
);
...
...
@@ -4847,24 +4842,12 @@ struct OcvFilter : public HalFilterImpl
}
};
class
HalSepFilterImpl
{
public
:
virtual
~
HalSepFilterImpl
()
{}
virtual
bool
init
(
int
stype
,
int
dtype
,
int
ktype
,
uchar
*
kernelx_data
,
size_t
kernelx_step
,
int
kernelx_width
,
int
kernelx_height
,
uchar
*
kernely_data
,
size_t
kernely_step
,
int
kernely_width
,
int
kernely_height
,
int
anchor_x
,
int
anchor_y
,
double
delta
,
int
borderType
)
=
0
;
virtual
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
=
0
;
virtual
void
free
()
{}
};
struct
ReplacementSepFilter
:
public
HalSepFilterImpl
struct
ReplacementSepFilter
:
public
hal
::
Filter2D
{
void
*
ctx
;
ReplacementSepFilter
()
:
ctx
(
0
)
{}
cvhalFilter2D
*
ctx
;
bool
isInitialized
;
ReplacementSepFilter
()
:
ctx
(
0
),
isInitialized
(
false
)
{}
bool
init
(
int
stype
,
int
dtype
,
int
ktype
,
uchar
*
kernelx_data
,
size_t
kernelx_step
,
int
kernelx_width
,
int
kernelx_height
,
uchar
*
kernely_data
,
size_t
kernely_step
,
int
kernely_width
,
int
kernely_height
,
...
...
@@ -4874,29 +4857,32 @@ struct ReplacementSepFilter : public HalSepFilterImpl
kernelx_data
,
kernelx_step
,
kernelx_width
,
kernelx_height
,
kernely_data
,
kernely_step
,
kernely_width
,
kernely_height
,
anchor_x
,
anchor_y
,
delta
,
borderType
);
if
(
res
==
CV_HAL_ERROR_OK
)
{
return
true
;
isInitialized
=
(
res
==
CV_HAL_ERROR_OK
);
return
isInitialized
;
}
return
false
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
if
(
isInitialized
)
{
int
res
=
cv_hal_sepFilter
(
ctx
,
src_data
,
src_step
,
dst_data
,
dst_step
,
width
,
height
,
full_width
,
full_height
,
offset_x
,
offset_y
);
if
(
res
!=
CV_HAL_ERROR_OK
)
CV_Error
(
Error
::
StsNotImplemented
,
"Failed to run HAL sepFilter implementation"
);
}
void
free
()
}
~
ReplacementSepFilter
()
{
if
(
isInitialized
)
{
int
res
=
cv_hal_sepFilterFree
(
ctx
);
if
(
res
!=
CV_HAL_ERROR_OK
)
CV_Error
(
Error
::
StsNotImplemented
,
"Failed to run HAL sepFilter implementation"
);
}
}
};
struct
OcvSepFilter
:
public
HalSepFilterImpl
struct
OcvSepFilter
:
public
hal
::
Filter2D
{
Ptr
<
FilterEngine
>
f
;
int
src_type
;
...
...
@@ -4916,7 +4902,7 @@ struct OcvSepFilter : public HalSepFilterImpl
delta
,
borderType
&
~
BORDER_ISOLATED
);
return
true
;
}
void
run
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
void
apply
(
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
...
...
@@ -4933,8 +4919,7 @@ struct OcvSepFilter : public HalSepFilterImpl
namespace
cv
{
namespace
hal
{
void
init_filter2d
(
FilterContext
&
c
,
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
Ptr
<
hal
::
Filter2D
>
Filter2D
::
createFilter2D
(
uchar
*
kernel_data
,
size_t
kernel_step
,
int
kernel_type
,
int
kernel_width
,
int
kernel_height
,
int
max_width
,
int
max_height
,
int
stype
,
int
dtype
,
...
...
@@ -4946,8 +4931,7 @@ void init_filter2d(FilterContext& c,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
))
{
c
.
impl
=
static_cast
<
void
*>
(
impl
);
return
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
delete
impl
;
}
...
...
@@ -4960,8 +4944,7 @@ void init_filter2d(FilterContext& c,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
))
{
c
.
impl
=
static_cast
<
void
*>
(
impl
);
return
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
delete
impl
;
}
...
...
@@ -4972,8 +4955,7 @@ void init_filter2d(FilterContext& c,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
))
{
c
.
impl
=
static_cast
<
void
*>
(
impl
);
return
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
delete
impl
;
}
...
...
@@ -4987,8 +4969,7 @@ void init_filter2d(FilterContext& c,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
))
{
c
.
impl
=
static_cast
<
void
*>
(
impl
);
return
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
delete
impl
;
}
...
...
@@ -4998,27 +4979,13 @@ void init_filter2d(FilterContext& c,
impl
->
init
(
kernel_data
,
kernel_step
,
kernel_type
,
kernel_width
,
kernel_height
,
max_width
,
max_height
,
stype
,
dtype
,
borderType
,
delta
,
anchor_x
,
anchor_y
,
isSubmatrix
,
isInplace
);
c
.
impl
=
static_cast
<
void
*
>
(
impl
);
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
}
void
filter2d
(
FilterContext
&
c
,
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
HalFilterImpl
*
impl
=
static_cast
<
HalFilterImpl
*>
(
c
.
impl
);
impl
->
run
(
src_data
,
src_step
,
dst_data
,
dst_step
,
width
,
height
,
full_width
,
full_height
,
offset_x
,
offset_y
);
}
void
free_filter2d
(
FilterContext
&
c
)
{
HalFilterImpl
*
impl
=
static_cast
<
HalFilterImpl
*>
(
c
.
impl
);
impl
->
free
();
delete
impl
;
c
.
impl
=
0
;
}
//---------------------------------------------------------------
void
init_sepFilter2d
(
FilterContext
&
c
,
int
stype
,
int
dtype
,
int
ktype
,
Ptr
<
Filter2D
>
Filter2D
::
createSepFilter2D
(
int
stype
,
int
dtype
,
int
ktype
,
uchar
*
kernelx_data
,
size_t
kernelx_step
,
int
kernelx_width
,
int
kernelx_height
,
uchar
*
kernely_data
,
size_t
kernely_step
,
int
kernely_width
,
int
kernely_height
,
int
anchor_x
,
int
anchor_y
,
double
delta
,
int
borderType
)
...
...
@@ -5030,8 +4997,7 @@ void init_sepFilter2d(FilterContext & c, int stype, int dtype, int ktype,
kernely_data
,
kernely_step
,
kernely_width
,
kernely_height
,
anchor_x
,
anchor_y
,
delta
,
borderType
))
{
c
.
impl
=
impl
;
return
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
);
}
delete
impl
;
}
...
...
@@ -5041,28 +5007,10 @@ void init_sepFilter2d(FilterContext & c, int stype, int dtype, int ktype,
kernelx_data
,
kernelx_step
,
kernelx_width
,
kernelx_height
,
kernely_data
,
kernely_step
,
kernely_width
,
kernely_height
,
anchor_x
,
anchor_y
,
delta
,
borderType
);
c
.
impl
=
impl
;
return
Ptr
<
hal
::
Filter2D
>
(
impl
)
;
}
}
void
sepFilter2d
(
FilterContext
&
c
,
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
int
full_width
,
int
full_height
,
int
offset_x
,
int
offset_y
)
{
HalSepFilterImpl
*
impl
=
static_cast
<
HalSepFilterImpl
*>
(
c
.
impl
);
impl
->
run
(
src_data
,
src_step
,
dst_data
,
dst_step
,
width
,
height
,
full_width
,
full_height
,
offset_x
,
offset_y
);
}
void
free_sepFilter2d
(
FilterContext
&
c
)
{
HalSepFilterImpl
*
impl
=
static_cast
<
HalSepFilterImpl
*>
(
c
.
impl
);
impl
->
free
();
delete
impl
;
c
.
impl
=
0
;
}
}
// cv::hal::
}
// cv::
...
...
@@ -5091,13 +5039,10 @@ void cv::filter2D( InputArray _src, OutputArray _dst, int ddepth,
if
(
(
borderType
&
BORDER_ISOLATED
)
==
0
)
src
.
locateROI
(
wsz
,
ofs
);
hal
::
FilterContext
c
;
hal
::
init_filter2d
(
c
,
kernel
.
data
,
kernel
.
step
,
kernel
.
type
(),
kernel
.
cols
,
kernel
.
rows
,
Ptr
<
hal
::
Filter2D
>
c
=
hal
::
Filter2D
::
createFilter2D
(
kernel
.
data
,
kernel
.
step
,
kernel
.
type
(),
kernel
.
cols
,
kernel
.
rows
,
dst
.
cols
,
dst
.
rows
,
src
.
type
(),
dst
.
type
(),
borderType
,
delta
,
anchor
.
x
,
anchor
.
y
,
src
.
isSubmatrix
(),
src
.
data
==
dst
.
data
);
hal
::
filter2d
(
c
,
src
.
data
,
src
.
step
,
dst
.
data
,
dst
.
step
,
dst
.
cols
,
dst
.
rows
,
wsz
.
width
,
wsz
.
height
,
ofs
.
x
,
ofs
.
y
);
hal
::
free_filter2d
(
c
);
c
->
apply
(
src
.
data
,
src
.
step
,
dst
.
data
,
dst
.
step
,
dst
.
cols
,
dst
.
rows
,
wsz
.
width
,
wsz
.
height
,
ofs
.
x
,
ofs
.
y
);
}
void
cv
::
sepFilter2D
(
InputArray
_src
,
OutputArray
_dst
,
int
ddepth
,
...
...
@@ -5122,13 +5067,11 @@ void cv::sepFilter2D( InputArray _src, OutputArray _dst, int ddepth,
CV_Assert
(
kernelX
.
type
()
==
kernelY
.
type
());
hal
::
FilterContext
c
;
hal
::
init_sepFilter2d
(
c
,
src
.
type
(),
dst
.
type
(),
kernelX
.
type
(),
Ptr
<
hal
::
Filter2D
>
c
=
hal
::
Filter2D
::
createSepFilter2D
(
src
.
type
(),
dst
.
type
(),
kernelX
.
type
(),
kernelX
.
data
,
kernelX
.
step
,
kernelX
.
cols
,
kernelX
.
rows
,
kernelY
.
data
,
kernelY
.
step
,
kernelY
.
cols
,
kernelY
.
rows
,
anchor
.
x
,
anchor
.
y
,
delta
,
borderType
&
~
BORDER_ISOLATED
);
hal
::
sepFilter2d
(
c
,
src
.
data
,
src
.
step
,
dst
.
data
,
dst
.
step
,
dst
.
cols
,
dst
.
rows
,
wsz
.
width
,
wsz
.
height
,
ofs
.
x
,
ofs
.
y
);
hal
::
free_sepFilter2d
(
c
);
c
->
apply
(
src
.
data
,
src
.
step
,
dst
.
data
,
dst
.
step
,
dst
.
cols
,
dst
.
rows
,
wsz
.
width
,
wsz
.
height
,
ofs
.
x
,
ofs
.
y
);
}
...
...
modules/imgproc/src/hal_replacement.hpp
View file @
17cd1dac
...
...
@@ -3,17 +3,19 @@
#include "opencv2/core/hal/interface.h"
inline
int
hal_ni_filterInit
(
void
**
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
,
int
,
int
,
double
,
int
,
int
,
bool
,
bool
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_filter
(
void
*
,
uchar
*
,
size_t
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_filterFree
(
void
*
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
struct
cvhalFilter2D
{};
inline
int
hal_ni_filterInit
(
cvhalFilter2D
**
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
,
int
,
int
,
double
,
int
,
int
,
bool
,
bool
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_filter
(
cvhalFilter2D
*
,
uchar
*
,
size_t
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_filterFree
(
cvhalFilter2D
*
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
#define cv_hal_filterInit hal_ni_filterInit
#define cv_hal_filter hal_ni_filter
#define cv_hal_filterFree hal_ni_filterFree
inline
int
hal_ni_sepFilterInit
(
void
**
,
int
,
int
,
int
,
uchar
*
,
size_t
,
int
,
int
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
double
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_sepFilter
(
void
*
,
uchar
*
,
size_t
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_sepFilterFree
(
void
*
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_sepFilterInit
(
cvhalFilter2D
**
,
int
,
int
,
int
,
uchar
*
,
size_t
,
int
,
int
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
double
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_sepFilter
(
cvhalFilter2D
*
,
uchar
*
,
size_t
,
uchar
*
,
size_t
,
int
,
int
,
int
,
int
,
int
,
int
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
inline
int
hal_ni_sepFilterFree
(
cvhalFilter2D
*
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
#define cv_hal_sepFilterInit hal_ni_sepFilterInit
#define cv_hal_sepFilter hal_ni_sepFilter
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment