Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
9ee87bd0
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
9ee87bd0
编写于
9月 28, 2012
作者:
I
Ilya Lavrenov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added parallel version of CvtColorLoop - main inner function of cvtColor
上级
c6e74119
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
32 addition
and
12 deletion
+32
-12
modules/imgproc/src/color.cpp
modules/imgproc/src/color.cpp
+32
-12
未找到文件。
modules/imgproc/src/color.cpp
浏览文件 @
9ee87bd0
...
@@ -156,24 +156,44 @@ template<> struct ColorChannel<float>
...
@@ -156,24 +156,44 @@ template<> struct ColorChannel<float>
///////////////////////////// Top-level template function ////////////////////////////////
///////////////////////////// Top-level template function ////////////////////////////////
template
<
class
Cvt
>
void
CvtColorLoop
(
const
Mat
&
srcmat
,
Mat
&
dstmat
,
const
Cvt
&
cvt
)
template
<
typename
Cvt
>
class
CvtColorLoop_Invoker
:
public
ParallelLoopBody
{
{
typedef
typename
Cvt
::
channel_type
_Tp
;
typedef
typename
Cvt
::
channel_type
_Tp
;
Size
sz
=
srcmat
.
size
();
public:
const
uchar
*
src
=
srcmat
.
data
;
uchar
*
dst
=
dstmat
.
data
;
size_t
srcstep
=
srcmat
.
step
,
dststep
=
dstmat
.
step
;
if
(
srcmat
.
isContinuous
()
&&
dstmat
.
isContinuous
()
)
CvtColorLoop_Invoker
(
const
Mat
&
_src
,
Mat
&
_dst
,
const
Cvt
&
_cvt
)
:
ParallelLoopBody
(),
src
(
_src
),
dst
(
_dst
),
cvt
(
_cvt
)
{
{
sz
.
width
*=
sz
.
height
;
sz
.
height
=
1
;
}
}
for
(
;
sz
.
height
--
;
src
+=
srcstep
,
dst
+=
dststep
)
virtual
void
operator
()(
const
Range
&
range
)
const
cvt
((
const
_Tp
*
)
src
,
(
_Tp
*
)
dst
,
sz
.
width
);
{
}
int
i
=
range
.
start
;
const
uchar
*
yS
=
src
.
data
+
src
.
step
*
i
;
uchar
*
yD
=
dst
.
data
+
dst
.
step
*
i
;
for
(
;
i
<
range
.
end
;
++
i
,
yS
+=
src
.
step
,
yD
+=
dst
.
step
)
cvt
((
const
_Tp
*
)
yS
,
(
_Tp
*
)
yD
,
src
.
cols
);
}
private:
const
Mat
src
;
Mat
dst
;
const
Cvt
cvt
;
CvtColorLoop_Invoker
(
const
CvtColorLoop_Invoker
&
);
const
CvtColorLoop_Invoker
&
operator
=
(
const
CvtColorLoop_Invoker
&
);
};
template
<
typename
Cvt
>
void
CvtColorLoop
(
const
Mat
&
src
,
Mat
&
dst
,
const
Cvt
&
cvt
)
{
Range
range
(
0
,
src
.
rows
);
CvtColorLoop_Invoker
<
Cvt
>
invoker
(
src
,
dst
,
cvt
);
parallel_for_
(
range
,
invoker
);
}
////////////////// Various 3/4-channel to 3/4-channel RGB transformations /////////////////
////////////////// Various 3/4-channel to 3/4-channel RGB transformations /////////////////
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录