/// <summary>
/// 获取区域
/// </summary>
/// <param name="bitmap"></param>
/// <param name="graybtm"></param>
/// <returns></returns>
public static Bitmap FindBundingBox(Bitmap bitmap, out Bitmap graybtm,out List<Rectangle> rects)
{
Image<Bgr, byte> img = new Image<Bgr, byte>(bitmap);
Image<Gray, byte> gray = new Image<Gray, byte>(img.Width, img.Height);
Image<Bgr, byte> resuImage = new Image<Bgr, byte>(img.Width, img.Height);
Image<Gray, byte> dnc = new Image<Gray, byte>(img.Width, img.Height);
CvInvoke.CvtColor(img, gray, ColorConversion.Bgra2Gray);//灰度化
//做一下膨胀,x与y方向都做,但系数不同
var kernal = CvInvoke.GetStructuringElement(ElementShape.Rectangle, new Size(, ), new Point(, ));
CvInvoke.Erode(gray, gray, kernal, new Point(, ), , BorderType.Default, new MCvScalar());
//CvInvoke.Canny(gray, gray, 100, 60);
CvInvoke.Threshold(gray, gray, , , ThresholdType.BinaryInv | ThresholdType.Otsu);//二值化
//检测连通域,每一个连通域以一系列的点表示,FindContours方法只能得到第一个域
graybtm = gray.ToBitmap();
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
CvInvoke.FindContours(gray, contours, dnc, RetrType.Ccomp, ChainApproxMethod.ChainApproxSimple);
var color = new MCvScalar(, , );
Console.WriteLine(contours.Size);
rects = new List<Rectangle>();
//开始遍历
for (int i = ; i < contours.Size; i++)
{
//得到这个连通区域的外接矩形
var rect = CvInvoke.BoundingRectangle(contours[i]);
//如果高度不足,或者长宽比太小,认为是无效数据,否则把矩形画到原图上
if (rect.Height > && rect.Width > )
{
rects.Add(rect);
CvInvoke.DrawContours(resuImage, contours, i, color);
}
} return img.ConcateVertical(resuImage).ToBitmap();
}
 private void StandardRects()
{
List<Rectangle> removeList=new List<Rectangle>();
foreach (var item in glbRect)
{
if (glbRect.Exists(o => o.Contains(item) && o!=item))
{
removeList.Add(item);
}
}
glbRect.RemoveAll(o => removeList.Contains(o));
glbRect=glbRect.OrderBy(o => o.X).ToList();
lb_count.Text = "轮廓总数:" + glbRect.Count;
}

emguCv3.x 实现字符分割,轮廓检测的更多相关文章

  1. EasyPR--开发详解(7)字符分割

    大家好,好久不见了. 一转眼距离上一篇博客已经是4个月前的事了.要问博主这段时间去干了什么,我只能说:我去“外面看了看”. 图1 我想去看看 在外面跟几家创业公司谈了谈,交流了一些大数据与机器视觉相关 ...

  2. OpenCV+Python识别车牌和字符分割的实现

    本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分 ...

  3. [转]图片中的字符分割提取(基于opencv)

    http://blog.csdn.net/anqing715/article/details/16883863 源图片 像这些图片的字符就比较好操作,每个字符都独立,不连在一起,所以轮廓检测最好了.所 ...

  4. 车牌识别LPR(六)-- 字符分割

    第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...

  5. EasyPR源码剖析(8):字符分割

    通过前面的学习,我们已经可以从图像中定位出车牌区域,并且通过SVM模型删除“虚假”车牌,下面我们需要对车牌检测步骤中获取到的车牌图像,进行光学字符识别(OCR),在进行光学字符识别之前,需要对车牌图块 ...

  6. opencv 车牌字符分割 ANN网络识别字符

    最近在复习OPENCV的知识,学习caffe的深度神经网络,正好想起以前做过的车牌识别项目,可以拿出来研究下 以前的环境是VS2013和OpenCV2.4.9,感觉OpenCV2.4.9是个经典版本啊 ...

  7. 轮廓检测论文解读 | 整体嵌套边缘检测HED | CVPR | 2015

    主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, gr ...

  8. CDH5.4.5运行多字符分割记录

    准备工作: 测试文件内容:cis_cust_imp_info 20131131|+|100010001001|+|BR01|+|2000.0120131131|+|100010001002|+|BR0 ...

  9. OpenCV图像轮廓检测

    轮廓检测: 轮廓检测的原理通俗的说就是掏空内部点,比如原图中有3*3的矩形点.那么就可以将中间的那一点去掉. 一.关键函数1.1  cvFindContours函数功能:对图像进行轮廓检测,这个函数将 ...

随机推荐

  1. JS左侧菜单-04

    <script language="javascript" type="text/javascript"> function HideShow() ...

  2. 为Exchange 2007 SCC 启用 SCR 副本-供需要的人使用!

    SCC 已经部署完整,接下来我们必须防范本地站点如果出现了完全的损坏怎么办? Exchange 2007 SP1 提供了另外一种高可用的方式,就是基于我们的SCR 模型,SCR 模型是基于SCC 本地 ...

  3. 对用户控件(ascx)属性(property)赋值

    对用户控件(ascx)属性(property)赋值 Insus.NET写此博文,是对用户控件(ASCX)的属性赋值经验与技巧分享.是这样子的,在做新闻站点时,一般都会有分很多类别. 在站点首页会显示最 ...

  4. C语言之字符集、ASCII码和sizeof运算符

    一 字符集和ASCII码 结论:字符本质上也是一个整数,每个字符都有唯一一个与之对应的整数, 比如说小写的a对应97,b对应98,c对应99,大写的A对应65,B对应66,C对应67 所以字符对应的那 ...

  5. [ios2]苹果iOS 5限制应用本地存储问题 【转】

    苹果 iOS 5 系统增加了一个新的机制——在设备容量空间不足的情况下自动清除高速缓存文件或临时目录的内容.这意味着,如果你设备的容量快到极限了,应用存储的很多离线内容,包括文章.杂志.图书.漫画以及 ...

  6. 转载 C#文件上传

     一.分析 本次博客,主要解决文件上传等一系列问题,将从两方面来论述,即1G以内文件和1G以上文件. 对于上传1G以内的文件,可以采用基本的三种上传方法:用Web控件FileUpload.html控件 ...

  7. 【CSS学习笔记】a标签的四种伪类

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  8. cache数据库学习周结

    学习cache数据库只有两周,下面说一下对这一数据库的理解吧.不一定对 cache数据库最大的特点是global: global就像全区变量一样,是一个广义的全局变量.数据库表中的一些重要的字段名以字 ...

  9. less学习:基础语法总结

    一. less是什么 Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 注意1):less使用. ...

  10. android中edittext被键盘挡住问题

    最近开始新项目,做注册页时候由于ui布局问题,edittext被键盘挡住了. 在stackoverflow上找了一遍,有提到在对应activity中设置windowSoftInputMode, 例如: ...