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
669ee041
Commit
669ee041
authored
Aug 24, 2018
by
Hamdi Sahloul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rewrite the UMat Python wrapper
parent
2bbe31a8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
97 additions
and
1 deletion
+97
-1
pyopencv_umat.hpp
modules/core/misc/python/pyopencv_umat.hpp
+37
-0
shadow_umat.hpp
modules/core/misc/python/shadow_umat.hpp
+59
-0
cv2.cpp
modules/python/src2/cv2.cpp
+0
-0
test_umat.py
modules/python/test/test_umat.py
+1
-1
No files found.
modules/core/misc/python/pyopencv_umat.hpp
0 → 100644
View file @
669ee041
#ifdef HAVE_OPENCV_CORE
#include "opencv2/core/mat.hpp"
typedef
std
::
vector
<
Range
>
vector_Range
;
CV_PY_TO_CLASS
(
UMat
);
CV_PY_FROM_CLASS
(
UMat
);
CV_PY_TO_ENUM
(
UMatUsageFlags
);
static
bool
cv_mappable_to
(
const
Ptr
<
Mat
>&
src
,
Ptr
<
UMat
>&
dst
)
{
//dst.reset(new UMat(src->getUMat(ACCESS_RW)));
dst
.
reset
(
new
UMat
());
src
->
copyTo
(
*
dst
);
return
true
;
}
static
void
*
cv_UMat_queue
()
{
return
cv
::
ocl
::
Queue
::
getDefault
().
ptr
();
}
static
void
*
cv_UMat_context
()
{
return
cv
::
ocl
::
Context
::
getDefault
().
ptr
();
}
static
Mat
cv_UMat_get
(
const
UMat
*
_self
)
{
Mat
m
;
m
.
allocator
=
&
g_numpyAllocator
;
_self
->
copyTo
(
m
);
return
m
;
}
#endif
modules/core/misc/python/shadow_umat.hpp
0 → 100644
View file @
669ee041
#error This is a shadow header file, which is not intended for processing by any compiler. \
Only bindings parser should handle this file.
namespace
cv
{
class
CV_EXPORTS_W
UMat
{
public
:
//! default constructor
CV_WRAP
UMat
(
UMatUsageFlags
usageFlags
=
USAGE_DEFAULT
);
//! constructs 2D matrix of the specified size and type
// (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)
CV_WRAP
UMat
(
int
rows
,
int
cols
,
int
type
,
UMatUsageFlags
usageFlags
=
USAGE_DEFAULT
);
CV_WRAP
UMat
(
Size
size
,
int
type
,
UMatUsageFlags
usageFlags
=
USAGE_DEFAULT
);
//! constucts 2D matrix and fills it with the specified value _s.
CV_WRAP
UMat
(
int
rows
,
int
cols
,
int
type
,
const
Scalar
&
s
,
UMatUsageFlags
usageFlags
=
USAGE_DEFAULT
);
CV_WRAP
UMat
(
Size
size
,
int
type
,
const
Scalar
&
s
,
UMatUsageFlags
usageFlags
=
USAGE_DEFAULT
);
//! Mat is mappable to UMat
CV_WRAP_MAPPABLE
(
Ptr
<
Mat
>
);
//! returns the OpenCL queue used by OpenCV UMat
CV_WRAP_PHANTOM
(
static
void
*
queue
());
//! returns the OpenCL context used by OpenCV UMat
CV_WRAP_PHANTOM
(
static
void
*
context
());
//! copy constructor
CV_WRAP
UMat
(
const
UMat
&
m
);
//! creates a matrix header for a part of the bigger matrix
CV_WRAP
UMat
(
const
UMat
&
m
,
const
Range
&
rowRange
,
const
Range
&
colRange
=
Range
::
all
());
CV_WRAP
UMat
(
const
UMat
&
m
,
const
Rect
&
roi
);
CV_WRAP
UMat
(
const
UMat
&
m
,
const
std
::
vector
<
Range
>&
ranges
);
//CV_WRAP_AS(get) Mat getMat(int flags CV_WRAP_DEFAULT(ACCESS_RW)) const;
//! returns a numpy matrix
CV_WRAP_PHANTOM
(
Mat
get
()
const
);
//! returns true iff the matrix data is continuous
// (i.e. when there are no gaps between successive rows).
// similar to CV_IS_MAT_CONT(cvmat->type)
CV_WRAP
bool
isContinuous
()
const
;
//! returns true if the matrix is a submatrix of another matrix
CV_WRAP
bool
isSubmatrix
()
const
;
/*! Returns the OpenCL buffer handle on which UMat operates on.
The UMat instance should be kept alive during the use of the handle to prevent the buffer to be
returned to the OpenCV buffer pool.
*/
CV_WRAP
void
*
handle
(
int
accessFlags
)
const
;
// offset of the submatrix (or 0)
CV_PROP_RW
size_t
offset
;
};
}
// namespace cv
modules/python/src2/cv2.cpp
View file @
669ee041
This diff is collapsed.
Click to expand it.
modules/python/test/test_umat.py
View file @
669ee041
...
...
@@ -12,7 +12,7 @@ class UMat(NewOpenCVTests):
data
=
np
.
random
.
random
([
512
,
512
])
# UMat constructors
data_um
=
cv
.
UMat
(
data
)
# from ndarray
data_sub_um
=
cv
.
UMat
(
data_um
,
[
128
,
256
],
[
128
,
256
]
)
# from UMat
data_sub_um
=
cv
.
UMat
(
data_um
,
(
128
,
256
),
(
128
,
256
)
)
# from UMat
data_dst_um
=
cv
.
UMat
(
128
,
128
,
cv
.
CV_64F
)
# from size/type
# test continuous and submatrix flags
assert
data_um
.
isContinuous
()
and
not
data_um
.
isSubmatrix
()
...
...
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