Emgucv常用函数总结:

//读取图片
Mat SCr = new Mat(Form1.Path, Emgu.CV.CvEnum.LoadImageType.AnyColor);
//根据路径创建指定的灰度图片
Mat scr = new Mat(Form1.Path, Emgu.CV.CvEnum.LoadImageType.Grayscale);
//获取灰度    //图像类型转换, bgr 转成 gray 类型。MAT Bw = New MAT
CvInvoke.CvtColor(SCr, bw, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
//相当于二值化图 --黑白 根据大小10判断为0还是255
CvInvoke.Threshold(bw,bw,10,255,Emgu.CV.CvEnum.ThresholdType.BinaryInv);
//获取指定区域图片 SCr为mat类型
Rectangle rectangle = new Rectangle(10,10,10,10);
SCr = SCr.ToImage<Bgr, byte>().GetSubRect(rectangle).Mat;
//将Mat类型转换为Image类型
Image<Bgr, byte> Su = SCr.ToImage<Bgr, byte>();
Image<Bgr, byte> Img = new Image<Bgr, byte>(new Bitmap(""));//路径声明
Image<Bgr, byte> Sub = SCr.ToImage<Bgr, byte>().GetSubRect(rectangle);//指定范围
//指定参数获得结构元素
Mat Struct_element = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Cross, new Size(3, 3), new Point(-1, -1));
//膨胀
CvInvoke.Dilate(bw, bw, Struct_element, new Point(1,1),3,Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0));
//腐蚀 当Struct_element模型创建不合理或者膨胀腐蚀次数较大时可能图像会发生偏移
CvInvoke.Erode(bw, bw, Struct_element, new Point(-1, -1), 3,Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0));
//轮廓提取
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
//筛选后
CvInvoke.FindContours(bw, contours, null, Emgu.CV.CvEnum.RetrType.List, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
int ksize = contours.Size;//获取连通区域的个数。
VectorOfPoint contour = contours[i];//获取独立的连通轮廓
Rectangle rect = CvInvoke.BoundingRectangle(contour);//提取最外部矩形。
double Length = CvInvoke.ArcLength(contour, false);//计算连通轮廓的周长。
//画出轮廓
Mat mask = bw.ToImage<Bgr, byte>().CopyBlank().Mat;
//获取一张背景为黑色的图像, 大小与 scr 的大小一样, 类型为 Bgr。
CvInvoke.DrawContours(mask, contours, -1, new MCvScalar(0, 0, 255));
Image<Ycc, byte> ycc_img = bgr_img.Convert<Ycc, byte>();//把 bgr颜色图片转成ycbcr类型。
Ycc min = new Ycc(152, 38, 118);//最小值的颜色。
Ycc max = new Ycc(94, 43, 118);//最大值得颜色。
Image<Gray, byte> result = ycc_img.InRange(min, max);//进行颜色提取。
Image<Bgr, byte> bgr_img = Ma.ToImage<Bgr, byte>();//载入一张 Bgr 类型的图片。
Bgr min = new Bgr(255, 255, 255);//白色的最小值, 允许一定154的误差。
Bgr max = new Bgr(255, 255, 255);//白色的最大值, 允许一定的误差。
Image<Gray, byte> result = bgr_img.InRange(min, max);//进行颜色提取。
Image<Bgr, Byte> imageSource = new Image<Bgr, Byte>(SCr.Bitmap);
Image<Hsv, Byte> imageHsv = imageSource.Convert<Hsv, Byte>();//将色彩空间从BGR转换到HSV
Image<Gray, Byte>[] imagesHsv = imageHsv.Split();//分解成H、S、V三部分
CvInvoke.AbsDiff(Ma1, Ma2, Ma); // 返回两幅图片或此图与某个yanse像素的差的绝对值的图片
CvInvoke.Add(Ma1, Ma2, Ma); // 返回这张图片与图片或颜色直接相加的图片(矩阵加法)  (适应两种效果)
//CvInvoke.HConcat(Ma1, Ma2, Ma); //返回与另一张图片横向链接的图片
//CvInvoke.VConcat(Ma1, Ma2, Ma);//返回与另一张图片纵向链接的图片//清除小于平均顶点10的二值图
Point[] po = { new Point(0, 0), new Point(res.Width, 0), new Point(res.Width, minAvg - Gets.Fges[1] + 52), new Point(0, minAvg - Gets.Fges[1] + 52) };
VectorOfPoint vp = new VectorOfPoint(po);
//CvInvoke.DrawContours(res, vp, -1, new MCvScalar(0, 0, 255));
CvInvoke.FillConvexPoly(res,vp,new MCvScalar(0),LineType.EightConnected);//填充指定区域/// <summary>
/// 灰度直方图计算  手动计算、/获取百分比的阀值  0.95
/// </summary>
public static void GetDenseHistogram95(ref int huidu, Mat ma)
{DenseHistogram dense = new DenseHistogram(256, new RangeF(0, 255));dense.Calculate(new Image<Gray, Byte>[] { ma.ToImage<Gray, byte>() }, true, null);//计算直方图数据。float[] data = dense.GetBinValues();float[] data2 = dense.GetBinValues();//获得直方图数据。/*** 进行数据归一化到[0,256]区域内并且绘制直方图***/float max = data[0]; //最大值for (int j = 1; j < data.Length; j++){if (data[j] > max){max = data[j];}}float Sum = data2.ToList().Sum();float FloCount = 0;for (int k = 0; k < data.Length; k++){data[k] = data[k] * 256 / max;FloCount += data2[k];if (FloCount / Sum >= 0.95){huidu = k;break;}}}//各种颜色空间 Hsv/Rgb/Hls/Xyz/Ycc/Gray
public static Image<Hsv, Byte> imageHsv=new Image<Hsv, byte>(mat.Bitmap);
public static Image<Rgb, Byte> Rgbimg = new Image<Rgb, byte>(mat.Bitmap);
public static Image<Hls, Byte> Hlsimg = new Image<Hls, byte>(mat.Bitmap);
public static Image<Xyz, Byte> Xyzimg = new Image<Xyz, byte>(mat.Bitmap);
public static Image<Ycc, Byte> Yccimg = new Image<Ycc, byte>(mat.Bitmap);
public static Image<Gray, Byte> Grayimg = new Image<Gray, byte>(mat.Bitmap);
Image<Gray, Byte>[] imagesHsvs = imageHsv.Split();//分解成H、S、V三部分其他相同
//高斯滤波实现
CvInvoke.GaussianBlur(ma, ma, new Size(5, 5), 4);
//形态学闭运算,先膨胀后腐蚀  Others.matWithPhi(by)自定义模型
CvInvoke.MorphologyEx(ma, ma, Emgu.CV.CvEnum.MorphOp.Close, Others.matWithPhi(by), new Point(-1, -1), 3, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0));
CvInvoke.MedianBlur(ma, ma, 5);//中值滤波实现
CvInvoke.PutText(ma05, "G num: 1", new Point(10, 100), FontFace.HersheyComplex, 0.5, new MCvScalar(255)); //指定坐标(10, 100)显示文字,中文乱码,
VectorOfPoint vp = new VectorOfPoint();
CvInvoke.ConvexHull(pointof, vp);查找最小外接矩形cvInpaint
double dou = CvInvoke.ContourArea(vp, false);  //计算面积
VectorOfPoint vect = new VectorOfPoint();
CvInvoke.FindNonZero(ma, vect); //获取非0的点
Mat maSave1 = ma5.Clone();//备份 保留原有图片
CvInvoke.AdaptiveThreshold(ma, mas, 255, AdaptiveThresholdType.GaussianC, Emgu.CV.CvEnum.ThresholdType.Binary, 3, 0);//查找最适合二值图

Emgucv使用中常用函数总结相关推荐

  1. EXCLE使用中常用函数和公式

    1.查找重复项 IF(COUNTIF(A:A,A1)>1"重复""") 或者 IF(COUNTIF($A$1:$A$100,A1)=1,"&qu ...

  2. C++string类常用函数 c++中的string常用函数用法总结

    string类的构造函数: string(const char *s);    //用c字符串s初始化 string(int n,char c);     //用n个字符c初始化 此外,string类 ...

  3. 【转载】gcc 使用中常用的参数及命令

    本文转载自:http://www.cnblogs.com/yaozhongxiao/archive/2012/03/16/2400473.html 如需转载,请注明原始出处.谢谢. --------- ...

  4. C++中string类函数常用函数大全

    最近,写各种关于字符串的问题,遇到不少题目解法或多或少的调用各种方法,今个发现了个大佬的总结,自己码一下保存(自己的编译器慢慢看,看文档,这谁看的进去这么多..) 大佬原文链接在最下面 string类 ...

  5. C语言程序设计(常用函数说明)

    C语言程序设计(常用函数说明) C 语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11计算机上使用.它由早期的编程语言 BCPL(Basi ...

  6. 【大数据】InfluxDB的常用查询及常用函数

    通过上篇博客,我们已经简单认识了InfluxDB了,其实在实际使用中,我们最常用的就是查询了,这篇博客就详细了解下InfluxDB的查询操作 一.常用查询 1.从单个measurement查询所有的f ...

  7. 计算机二级vf中字符,计算机二级VFP常用函数使用技巧探讨

    摘要:掌握VFP常用函数使用技巧对学生非常重要,在二级考试中,函数使用频繁,贯穿整个考试,不论是表创建的索引建立.还是查询的字段构造以及表单控件的函数表示,都离不开函数的使用.为了让学生理清这部分思路 ...

  8. Qt QString类及常用函数功能详解

    QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...

  9. php内置常用函数是哪些,PHP常用函数有哪些

    PHP常用函数有哪些 导语:PHP主要通过函数实现一些功能,那PHP常用函数有哪些呢?下面就由小编为大家介绍一下,欢迎大家阅读! 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2) ...

最新文章

  1. 欧盟科学家突破纳米尺度高清晰红外显微成像技术
  2. 不能上传图片和编辑内容很慢,望改进
  3. 项目展示文案生成设计
  4. 组织应该采用集中式发电机吗?
  5. [读书笔记]C#学习笔记三: C#类型详解..
  6. html怎么设置椭圆文本框,html – 避免CSS border-radius中的椭圆形状
  7. C++安全方向(二):2.4 openssl_BIO接口解析
  8. AD域控exchange邮箱—powershell 程序暂停sleep 继续执行的方法
  9. windows 网络编程报错 error LNK2019
  10. HDU 2665 Kth number(主席树静态区间第K大)题解
  11. 什么是计算机文化它与计算机技术有何区别,什么叫计算机文化?
  12. android单选题数据库,数据库系统工程师题库
  13. python 求和_python pandas行、列求和及累加求和
  14. 闲聊调度系统 Apache Airflow
  15. VB创建写字板小程序
  16. UltraEdit的上百种语法高亮文件下载,具体添加请看其中说明!(推荐)
  17. 软件测试工程师的一次思考
  18. Windows 批量创建用户
  19. Hadoop权威指南笔记1——第1章:初始Hadoop
  20. C语言进阶——内联汇编

热门文章

  1. 关于时区您了解多少呢?在中国我们使用的是哪个时区?
  2. 2011-2019 历届蓝桥杯——本科B组C/C++组别所有试题——详解大全
  3. canvas高效绘制10万图形,你必须知道的高效绘制技巧
  4. ·穷途末路之举·解决VirtualBox启动问题-Error relaunching VirtualBox VM process 5/terminated with exit code1(0x1)
  5. 关于Java线程,看这一篇就绝对够用了
  6. 你长得真帅,咱俩生个孩子吧
  7. 【Java学习路线之JavaWeb】Spring MVC框架入门教程
  8. 如果有人问你数据库的原理,叫他看这篇文章
  9. LeetCode刷题笔记 二分查找 局部有序
  10. C++string:查找、替换、插入、删除等