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
e1296382
Commit
e1296382
authored
Jun 21, 2013
by
peng xiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add a workaround to interpolate between oclMat and Input/OutputArray.
parent
e600beb4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
69 additions
and
1 deletion
+69
-1
core.hpp
modules/core/include/opencv2/core/core.hpp
+2
-1
matrix.cpp
modules/core/src/matrix.cpp
+30
-0
ocl.hpp
modules/ocl/include/opencv2/ocl/ocl.hpp
+8
-0
matrix_operations.cpp
modules/ocl/src/matrix_operations.cpp
+29
-0
No files found.
modules/core/include/opencv2/core/core.hpp
View file @
e1296382
...
...
@@ -1322,7 +1322,8 @@ public:
EXPR
=
6
<<
KIND_SHIFT
,
OPENGL_BUFFER
=
7
<<
KIND_SHIFT
,
OPENGL_TEXTURE
=
8
<<
KIND_SHIFT
,
GPU_MAT
=
9
<<
KIND_SHIFT
GPU_MAT
=
9
<<
KIND_SHIFT
,
OCL_MAT
=
10
<<
KIND_SHIFT
};
_InputArray
();
...
...
modules/core/src/matrix.cpp
View file @
e1296382
...
...
@@ -980,6 +980,11 @@ Mat _InputArray::getMat(int i) const
return
!
v
.
empty
()
?
Mat
(
size
(
i
),
t
,
(
void
*
)
&
v
[
0
])
:
Mat
();
}
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
CV_Assert
(
k
==
STD_VECTOR_MAT
);
//if( k == STD_VECTOR_MAT )
{
...
...
@@ -1062,6 +1067,11 @@ void _InputArray::getMatVector(vector<Mat>& mv) const
return
;
}
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
CV_Assert
(
k
==
STD_VECTOR_MAT
);
//if( k == STD_VECTOR_MAT )
{
...
...
@@ -1189,6 +1199,11 @@ Size _InputArray::size(int i) const
return
tex
->
size
();
}
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
CV_Assert
(
k
==
GPU_MAT
);
//if( k == GPU_MAT )
{
...
...
@@ -1303,6 +1318,11 @@ bool _InputArray::empty() const
if
(
k
==
OPENGL_TEXTURE
)
return
((
const
ogl
::
Texture2D
*
)
obj
)
->
empty
();
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
CV_Assert
(
k
==
GPU_MAT
);
//if( k == GPU_MAT )
return
((
const
gpu
::
GpuMat
*
)
obj
)
->
empty
();
...
...
@@ -1523,6 +1543,11 @@ void _OutputArray::create(int dims, const int* sizes, int mtype, int i, bool all
return
;
}
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
if
(
k
==
NONE
)
{
CV_Error
(
CV_StsNullPtr
,
"create() called for the missing output array"
);
...
...
@@ -1634,6 +1659,11 @@ void _OutputArray::release() const
return
;
}
if
(
k
==
OCL_MAT
)
{
CV_Error
(
-
1
,
"Not implemented"
);
}
CV_Assert
(
k
==
STD_VECTOR_MAT
);
//if( k == STD_VECTOR_MAT )
{
...
...
modules/ocl/include/opencv2/ocl/ocl.hpp
View file @
e1296382
...
...
@@ -248,6 +248,11 @@ namespace cv
operator
Mat
()
const
;
void
download
(
cv
::
Mat
&
m
)
const
;
//! convert to _InputArray
operator
_InputArray
();
//! convert to _OutputArray
operator
_OutputArray
();
//! returns a new oclMatrix header for the specified row
oclMat
row
(
int
y
)
const
;
...
...
@@ -387,6 +392,9 @@ namespace cv
int
wholecols
;
};
// convert InputArray/OutputArray to oclMat
CV_EXPORTS
oclMat
&
getOclMat
(
InputArray
src
);
CV_EXPORTS
oclMat
&
getOclMat
(
OutputArray
src
);
///////////////////// mat split and merge /////////////////////////////////
//! Compose a multi-channel array from several single-channel arrays
...
...
modules/ocl/src/matrix_operations.cpp
View file @
e1296382
...
...
@@ -74,6 +74,7 @@ namespace cv
}
}
////////////////////////////////////////////////////////////////////////
// convert_C3C4
static
void
convert_C3C4
(
const
cl_mem
&
src
,
oclMat
&
dst
)
...
...
@@ -227,6 +228,34 @@ void cv::ocl::oclMat::upload(const Mat &m)
//download_channels = m.channels();
}
cv
::
ocl
::
oclMat
::
operator
cv
::
_InputArray
()
{
_InputArray
newInputArray
;
newInputArray
.
flags
=
cv
::
_InputArray
::
OCL_MAT
;
newInputArray
.
obj
=
reinterpret_cast
<
void
*>
(
this
);
return
newInputArray
;
}
cv
::
ocl
::
oclMat
::
operator
cv
::
_OutputArray
()
{
_OutputArray
newOutputArray
;
newOutputArray
.
flags
=
cv
::
_InputArray
::
OCL_MAT
;
newOutputArray
.
obj
=
reinterpret_cast
<
void
*>
(
this
);
return
newOutputArray
;
}
cv
::
ocl
::
oclMat
&
cv
::
ocl
::
getOclMat
(
InputArray
src
)
{
CV_Assert
(
src
.
flags
&
cv
::
_InputArray
::
OCL_MAT
);
return
*
reinterpret_cast
<
oclMat
*>
(
src
.
obj
);
}
cv
::
ocl
::
oclMat
&
cv
::
ocl
::
getOclMat
(
OutputArray
src
)
{
CV_Assert
(
src
.
flags
&
cv
::
_InputArray
::
OCL_MAT
);
return
*
reinterpret_cast
<
oclMat
*>
(
src
.
obj
);
}
void
cv
::
ocl
::
oclMat
::
download
(
cv
::
Mat
&
m
)
const
{
CV_DbgAssert
(
!
this
->
empty
());
...
...
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