2020-12-15

【Emgu】一起学EmguCV(二)Image和Matrix的使用

如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! !

 本文链接:https://www.cnblogs.com/bomo/archive/2013/03/28/2986573.html

上一篇简单介绍了EmguCV库的简单配置,并演示了Hello World程序,本篇继续介绍关于Emgu的基本使用

1、关于Image类的使用

  Image<TColor, TDepth>用两个参数定义:Color 和 Depth

图片例如:创建一个8位的灰度图像   

//创建一张灰度图  Image<Gray, Byte> img1 = new Image<Gray, Byte>(480, 320);  //创建一张蓝色的图片  Image<Bgr, Byte> img2 = new Image<Bgr, Byte>(480, 320, new Bgr(255, 0, 0));  //从文件创建Image  Image<Bgr, Byte> img3 = new Image<Bgr, Byte>("MyImage.jpg");  //从Bitmap创建Image  Bitmap bmp = new Bitmap("MyImage.jpg");  Image<Bgr, Byte> img4 = new Image<Bgr, Byte>(bmp);

  .Net会自动完成垃圾回收,对于比较大的图片,我们可以使用using关键字在不需要的时候自动对其进行回收

using (Image<Gray, Single> image = new Image<Gray, Single>(1000, 800))  {   //对image操作  }

  

获取和设置像素颜色

  有两种方式对图片的像素进行直接操作

Image<Bgr, byte> img = new Image<Bgr, byte>(480, 320, new Bgr(0, 255, 0));  //直接通过索引访问,速度较慢,返回TColor类型  Bgr color = img[100, 100];  img[100, 100] = color;  //通过Data索引访问,速度快  //最后一个参数为通道数,例如Bgr图片的 0:蓝色,1:绿色,2:红色,Gray的0:灰度,返回TDepth类型  Byte blue = img.Data[100, 100, 0];  Byte green = img.Data[100, 100, 1];  Byte red = img.Data[100, 100, 2];

  Image<TColor, TDepth>还对操作运算符进行了重载( + - * / )

Image<Bgr, byte> img1 = new Image<Bgr, byte>(480, 320, new Bgr(255, 0, 0));  Image<Bgr, byte> img2 = new Image<Bgr, byte>(480, 320, new Bgr(0, 255, 0));  //img3 == new Image<Bgr, byte>(480, 320, new Bgr(255, 255, 0));  Image<Bgr, byte> img3 = img1 + img2;

  

 Image<TColor, TDepth>有一个Not函数,可以让图片反色

  Image<TColor, TDepth>还提供了转换器,可以让我们更方便的编写转换逻辑 

  Image<TColor, TDepth>还有一个 ToBitmap() 函数可以转换为Bitmap

 Image<Bgr, byte> img1 = new Image<Bgr, byte>(@"test.jpg");  Image<Bgr, byte> img2 = img1.Not();  //下面转换效果与Not()函数相同  Image<Bgr, Byte> img3 = img1.Convert<byte>(delegate(Byte b) { return (Byte)(255 - b); });  pictureBox1.Image = img3.ToBitmap();

  

2、关于Matrix矩阵类的使用

  Martix的使用与Image类似,这里就不阐述了

 Matrix<Single> matrix = new Matrix<Single>(480, 320);  float f = matrix[100, 100];  float df = matrix.Data[100, 100];

  举例子:

Matrix<Byte> mat1 = new Matrix<byte>(new Size(500, 200));   for (int i = 0; i < 200; i++)    for (int j = 0; j < 500; j++)     mat1[i, j] = 100;   imageBox1.Image = mat1.Mat;   mat1.Save("mei.jpg"); //图片————————————————

  

 









原文转载:http://www.shaoqun.com/a/500063.html

五洲会:https://www.ikjzd.com/w/1068

FEN:https://www.ikjzd.com/w/2668

landing:https://www.ikjzd.com/w/2368


如果需要查看更多文章,请微信搜索公众号csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群,我邀请你进群!!! 本文链接:https://www.cnblogs.com/bomo/archive/2013/03/28/2986573.html上一篇简单介绍了EmguCV库的简单配置,并演示了HelloWorld程序,本篇继续介绍关于Emgu的基本使用1、关于Image类的
西农:西农
f2c:f2c
对Review内容存疑,如何进行申诉?:对Review内容存疑,如何进行申诉?
瀑布到原始森林景色奇丽妖娆——日则沟 :瀑布到原始森林景色奇丽妖娆——日则沟
中国政府确立的第一个国家公园(含美图):中国政府确立的第一个国家公园(含美图)

No comments:

Post a Comment