Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
e1296382
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
e1296382
编写于
6月 21, 2013
作者:
P
peng xiao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a workaround to interpolate between oclMat and Input/OutputArray.
上级
e600beb4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
69 addition
and
1 deletion
+69
-1
modules/core/include/opencv2/core/core.hpp
modules/core/include/opencv2/core/core.hpp
+2
-1
modules/core/src/matrix.cpp
modules/core/src/matrix.cpp
+30
-0
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/include/opencv2/ocl/ocl.hpp
+8
-0
modules/ocl/src/matrix_operations.cpp
modules/ocl/src/matrix_operations.cpp
+29
-0
未找到文件。
modules/core/include/opencv2/core/core.hpp
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录