2019独角兽企业重金招聘Python工程师标准>>>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using System.Drawing;
using Emgu.CV.Util;
using System.Collections;
namespace Final.Tool
{class Pictrue{public static ArrayList list = new ArrayList();public static void preDeal(String path) {list.Clear();Image<Bgr, byte> src = new Image<Bgr, byte>(path);Image<Gray, byte> graySrc = src.Convert<Gray, byte>();//CvInvoke.cvSmooth(graySrc.Ptr,graySrc.Ptr,Emgu.CV.CvEnum.SMOOTH_TYPE.CV_GAUSSIAN,3,3,0,0);Image<Gray, byte> sobel = new Image<Gray, byte>(path);CvInvoke.cvSobel(graySrc.Ptr,sobel.Ptr,2,0,3);CvInvoke.cvNamedWindow("sobel");CvInvoke.cvShowImage("sobel", sobel);CvInvoke.cvThreshold(sobel.Ptr,sobel.Ptr,0,255,Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU);//自定义1*3的核进行X方向的膨胀腐蚀IntPtr mask =CvInvoke.cvCreateStructuringElementEx(3, 1, 1, 0,Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_RECT, new IntPtr());//自定义一个核CvInvoke.cvDilate(sobel.Ptr, sobel.Ptr, mask, 10);//X方向膨胀连通数字CvInvoke.cvErode(sobel.Ptr, sobel.Ptr, mask, 16);//X方向腐蚀去除碎片CvInvoke.cvDilate(sobel.Ptr, sobel.Ptr, mask, 10); //X方向膨胀回复形态//自定义3*1的核进行Y方向的膨胀腐蚀mask =CvInvoke.cvCreateStructuringElementEx(1, 3, 0, 1,Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_RECT, new IntPtr());//自定义一个核CvInvoke.cvErode(sobel.Ptr, sobel.Ptr, mask, 1);// Y方向腐蚀去除碎片CvInvoke.cvDilate(sobel.Ptr, sobel.Ptr, mask, 6);//回复形态CvInvoke.cvNamedWindow("sobel2");CvInvoke.cvShowImage("sobel2", sobel);//轮廓检测:IntPtr storage = CvInvoke.cvCreateMemStorage(0);MCvSeq comp1 = new MCvSeq();comp1.ptr = new IntPtr();IntPtr Dyncontour = new IntPtr();int n = CvInvoke.cvFindContours(sobel.Ptr,storage,ref Dyncontour, StructSize.MCvContour,Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_CCOMP, Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE,new Point(0, 0));Seq<Point> DyncontourTemp1 = new Seq<Point>(Dyncontour, null);//方便对IntPtr类型进行操作Seq<Point> DyncontourTemp=DyncontourTemp1;Image<Bgr, byte> tempContImg = new Image<Bgr, byte>(path);double area;for (; DyncontourTemp != null && DyncontourTemp.Ptr.ToInt32() != 0; DyncontourTemp = DyncontourTemp.HNext){Rectangle rect = CvInvoke.cvBoundingRect(DyncontourTemp, false);if (rect.Width > 2.8 * rect.Height && rect.Width < 3.5 * rect.Height)//{//抠到图了Image<Bgr, byte> dst = new Image<Bgr, byte>(rect.Width,rect.Height);CvInvoke.cvSetImageROI(tempContImg.Ptr,rect);CvInvoke.cvCopy(tempContImg.Ptr,dst.Ptr,new IntPtr());list.Add(dst);CvInvoke.cvSaveImage("p1.jpg",dst,new IntPtr());CvInvoke.cvResetImageROI(tempContImg);}CvInvoke.cvDrawContours(tempContImg.Ptr, DyncontourTemp, new MCvScalar(255, 255, 255), new MCvScalar(255, 255, 255), 0, 1,Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0));}//Rectangle rect = CvInvoke.cvBoundingRect(DyncontourTemp, false);CvInvoke.cvShowImage("cont",tempContImg);} }
}

这段代码可以抠出类似车牌的矩形框,不过因为本人有点赖,没有把所有抠出来的矩形保存为图片,只保存了第一个抠出来的矩形,有兴趣的人在实际运行的时候再修改修改。

转载于:https://my.oschina.net/swchenyuzhe/blog/260934

Emgucv粗略抠取车牌相关推荐

  1. matlab手动抠取圆形区域_利用Photoshop通道工具扣取人物头发教程-PS抠图

    本文原创作者小申羊,北京科技大学冶金专业研究生.平面设计爱好者!作者从自身学习角度总结分析,教程非常详细,非常适合新手学习! 本次扣图教程主要使用钢笔工具沿女孩的边缘区域绘制路径:然后借助通道.画笔工 ...

  2. 绿布抠像怎么抠干净_AE如何抠取绿幕视频 干净抠像教程

    AE是一款相当不错的视频处理软件,我们能够用它来解决各种各样在视频编辑方面出现的问题,不少制作视频的朋友都知道绿幕视频要抠取东西的话是一个非常头疼的事情,但是有时候工作需要得用AE进行抠取,特此小编带 ...

  3. php从照片中抠出人脸,PS怎样将一张图片上的人脸抠取五官下来到另一张图片

    怎么样用Photoshop把一张图片上的脸抠取五官下来到另一张图片?就是用Photoshop像下面图片一样抠取五官到另一张图片上 但是只要五官 然后肤色还是要黄色的. 主要过程: 1. 把皮卡丘的五官 ...

  4. PS人物头发抠取教程 PS照片换背景方法

    PS人物头发抠取教程 PS照片换背景方法 | 浏览:256 | 更新:2015-04-20 18:09 1 2 3 4 5 6 7 分步阅读 怎么完美抠取照片中人物及头发呢?当我们需要更换照片背景时, ...

  5. flash怎么去掉绿幕_AE如何抠取绿幕视频?抠取绿幕视频的方法

    AE是一款很不错的视频处理软件.我们能够用它来解决各种各样的视频编辑问题,在之前的教程中小编为大家介绍了Camtasia抠取绿幕视频的方法,同为视频编辑软件的AE自然也能很好地完成绿幕视频的抠取工作, ...

  6. 「PS技巧」教你如何快速抠取红色合同印章,大兵SEO博客

    「PS技巧」:教你如何快速抠取红色合同印章 1.首先需要用PS选取工具框选出要抠取的红印章: 2.然后点击PS菜单选项"选择"-"颜色范围": 3.吸取红印章的 ...

  7. H5使用canvas抠取红色印章

    实现抠取纸张上盖的红色印章,这个函数很简单,传入url,返回一个base64格式的印章图片 GTRS.convertToTransparent(url,callback); <!DOCTYPE ...

  8. 《Photoshop图像合成专业技法(修订版)》—第1章1.3节抠取头发

    本节书摘来自异步社区<Photoshop图像合成专业技法(修订版)>一书中的第1章1.3节抠取头发,作者[美]Matt kloskowski,更多章节内容可以访问云栖社区"异步社 ...

  9. 各种抠图动态图片_学习抠取动物毛发图片的PS抠图技巧

    抠图是非常讲究方法的,具体需要根据原始素材中主体与背景的复杂程度选择合适的方法.如下图所示的猴子毛发颜色不同,最好是选用抽出滤镜抠图,分别把白色及黑色毛发抠出即可. 原图 最终效果 刚找的" ...

最新文章

  1. DNS通道检测 国内学术界研究情况——研究方法:基于特征或者流量,使用机器学习决策树分类算法居多...
  2. c 输出空格_Python编程:案例详解输出函数print
  3. SDUTOJ3469_深度优先搜索练习之神奇的矩环(DFS)
  4. 浅谈 JavaScript、ECMAScript (ES5、ES6)是什么、相互关系
  5. 人工智能与深度学习概念(5)——目标检测-RCNN
  6. PHP比较两个时间戳相差天时分秒
  7. android 原理 组合控件_Android组合控件实现功能强大的自定义控件
  8. TrueCrypt加密安全问题
  9. C++ stdio.h详解
  10. 双11 背后的全链路可观测性:阿里巴巴鹰眼在“云原生时代”的全面升级
  11. mysql 时间语句,mysql语句大全_mysql时间查询常用语句大全
  12. Asp.net学习资料
  13. MATLAB学习之泰勒展开(四)
  14. Eslint:Parsing error: The keyword ‘interface‘ is reserved
  15. 如何批量给视频加文字水印?
  16. 两个步骤解决 SQL Server 登录报错 通过端口 1433 连接到主机 的 TCP/IP 连接失败。 错误:“connect timed out”
  17. PL2303在ARM Linux下驱动的问题及解决方法
  18. 配置rtools 4.0 https://cran.r-project.org/bin/windows/Rtools/
  19. Yotta企业云盘:怎样让企业数据文档防泄密
  20. 如何做一个自己的开源聊天项目?(仿微信)

热门文章

  1. 中间件的解析漏洞详解及演示
  2. 为RecyclerView添加下拉刷新(PullToRefresh)功能
  3. 记录一下Struts2升级遇到的问题
  4. NOIP 模拟 box - 费用流 / 匈牙利
  5. 树莓派学习——文件传输
  6. PHP Ajax 跨域问题最佳解决方案
  7. Android学习指南 第六讲:用户界面 View(二)
  8. 在Axapta中实现trim函数
  9. Python基础---容器集合Set
  10. 数字图像处理(一)2