//
//_kernel : 形态学滤波的核
//anchor: 锚点再滤波核的位置
//iterations: 迭代次数
static void morphOp( int op, InputArray _src, OutputArray _dst,
InputArray _kernel,
Point anchor, int iterations,
int borderType, const Scalar& borderValue )
{
Mat src = _src.getMat(), kernel = _kernel.getMat();
Size ksize = kernel.data ? kernel.size() : Size(3,3);
anchor = normalizeAnchor(anchor, ksize); CV_Assert( anchor.inside(Rect(0, 0, ksize.width, ksize.height)) ); _dst.create( src.size(), src.type() );
Mat dst = _dst.getMat(); if( iterations == 0 || kernel.rows*kernel.cols == 1 )
{
src.copyTo(dst);
return;
} if( !kernel.data )
{
kernel = getStructuringElement(MORPH_RECT, Size(1+iterations*2,1+iterations*2));
anchor = Point(iterations, iterations);
iterations = 1;
}
else if( iterations > 1 && countNonZero(kernel) == kernel.rows*kernel.cols )
{
anchor = Point(anchor.x*iterations, anchor.y*iterations);
kernel = getStructuringElement(MORPH_RECT,
Size(ksize.width + (iterations-1)*(ksize.width-1),
ksize.height + (iterations-1)*(ksize.height-1)),
anchor);
iterations = 1;
} int nStripes = 1;
#if defined HAVE_TBB && defined HAVE_TEGRA_OPTIMIZATION //这里是TBB指令集操作, 如果你的库没有使用tbb 则这句话不会执行
if (src.data != dst.data && iterations == 1 && //NOTE: threads are not used for inplace processing
(borderType & BORDER_ISOLATED) == 0 && //TODO: check border types
src.rows >= 64 ) //NOTE: just heuristics
nStripes = 4;
#endif parallel_for(BlockedRange(0, nStripes),
MorphologyRunner(src, dst, nStripes, iterations, op, kernel, anchor, borderType, borderType, borderValue)); //Ptr<FilterEngine> f = createMorphologyFilter(op, src.type(),
// kernel, anchor, borderType, borderType, borderValue ); //f->apply( src, dst );
//for( int i = 1; i < iterations; i++ )
// f->apply( dst, dst );
}

  

最新文章

  1. 浅谈如何使用python抓取网页中的动态数据
  2. 用excel做分组散点图
  3. VMware安装centos虚拟机
  4. 对dijkstra算法的自我理解,c#例子
  5. DDD~DDD从零起步架构说明
  6. JSP网站开发基础总结《十二》
  7. [Android Tips] 10. Pull out /data/data/${package_name} files without root access
  8. The Socket API, Part 5: SCTP
  9. POJ 2528 Mayor&#39;s posters (线段树,染色问题,离散化要注意)
  10. java 转换 小函数(不断增加中。。。)
  11. 路E施工管理ERP系统
  12. Spring框架入门之Spring简介
  13. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
  14. MySQL:参数wait_timeout和interactive_timeout以及空闲超时的实现【转】
  15. Java语法基础学习DayTwenty(反射机制续)
  16. DIYer最担心的事来了!CPU降价彻底无望
  17. python repr和str
  18. IO写 PrintWriter
  19. C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数
  20. HTML5游戏实战之精灵翻转

热门文章

  1. centos7 安装 mysql(在线安装)
  2. count(1) 与 count(*) 比较
  3. 阿里云轻量应用服务器 配置mysql详解(转载)
  4. double,float,BigDecimal类型数值的操作
  5. 解决Java中的HttpServletResponse中文乱码问题
  6. SpringBoot: 12.异常处理方式2(使用@ExceptionHandle注解)(转)
  7. 深入理解channels - kavya Joshi
  8. python列表删除--remove(),del,pop()
  9. 【DSP开发】DSP能用VS2010生成的链接库文件吗?
  10. Docker通过挂载安装mysql