小实例

   class Program
{
static void Main(string[] args)
{
#region Emgu.Cv
string imgPath = @"D:\timg.jpg";
//从文件中读取图像
var image = CvInvoke.Imread(imgPath, LoadImageType.Color);
//创建一个显示窗口
CvInvoke.NamedWindow("AJpg", NamedWindowType.Normal);
//显示图片
CvInvoke.Imshow("AJpg", image);
//等待按键输入
CvInvoke.WaitKey();
CvInvoke.DestroyWindow("AJpg");
image.Dispose();
#endregion
Console.Read();
}
}

基本方法

一.创建图像

Image<Bgr,Byte> image=new Image<Bgr,Byte>(400,400,new Bgr(255,0,0));

二.读入图像

 Image<Bgr, Byte> image = new Image<Bgr, byte>(@"D:\youyi-003.jpg");

三.从.Net Bitmap对象创建图像

Image<Bgr, Byte> image = new Image<Bgr, Byte>(bmp); 

四.像素的获取

彩图时:

Bgr _Bgr = _Image[0, 0];//获取_Image图像[0, 0]处的bgr像素值;  

灰度图时:

Gray _Gray = _image[0, 0]];//获取_Gray图像[0, 0]处的gray像素值;

五、像素的赋值  

       //按位置指定或写入像素值

       //彩图
_Image[0, 0] = new Bgr(Color.Red);
//灰度图
_image[0, 0] = new Gray(200); //按数据属性指定或写入像素值 //彩图时
Color R = Color.Red;
_Image.Data[0,0,2] = R.R; //红
_Image.Data[0,0,1] = R.G; //绿
_Image.Data[0,0,0] = R.B; //蓝
//灰度图时
_image[0, 0] = new Gray(200);

六、像素的转换

       // BGR转化成int(把value.Red替换成数字)
//Color _colour = Color.FromArgb((int)value.Red, (int)value.Blue, (int)value.Green);
Color _colour = Color.FromArgb(100, 200, 250);
//Gray 转化成 int
int _intensity = (int)_Gray.Intensity;
//直接用数据属性转换
//Colour
Color _colour1 = Color.FromArgb(_Image.Data[0, 0, 0],
_Image.Data[0, 0, 1], _Image.Data[0, 0, 2]);
//Gray Image
int _intensity1 = _image.Data[0, 0, 0];

七、图像显示  

     //使用ImageBox;
        Image<Bgr, Byte> _Image = new Image<Bgr, byte>(Openfile.FileName);
imageBox1.Image = _image;
        //转换为位图使用windows form中的PictureBox控件。
     Image<Bgr, Byte> _Image = new Image<Bgr, byte>(Openfile.FileName);
pictureBox1.Image = _Image.ToBitmap();

小实例  

 图片反转 

1.WinForm中引入emgu.CV.UI.dll 引入工具栏中

2.编写代码

 private void Form1_Load(object sender, EventArgs e)
{
//从文件中加载图片
Image<Bgr, Byte> image = new Image<Bgr, byte>(@"D:\timg.jpg");
imageBox1.Image = image;
} private void btn_Flip_Click(object sender, EventArgs e)
{
if (imageBox1.Image!=null)
{
var image = (Image<Bgr, Byte>)imageBox1.Image;
//图片反转
image._Flip(FlipType.Horizontal);
imageBox1.Image = image;
}
}

 

Emgu.CV(二)的更多相关文章

  1. [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化

    重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数)  1.概述 图像二值化是图像处理中的一项基本技术,也 ...

  2. [转载+原创]Emgu CV on C# (二) —— Emgu CV on 灰度化

    本文主要对彩色图片灰度化的方法及其实现过程进行总结,最终给出Emgu CV实现的代码. 一.灰度化原理及数学实现(转载自——<图像灰度化方法总结及其VC实现> 该篇文章使用opencv实现 ...

  3. 【转】Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  4. C# Emgu CV学习笔记二之图像读写的两种方法

    http://blog.csdn.net/marvinhong/article/details/6800450 图像显示在控件loadPictureBox上 方法一 //读取图像001.jpg Int ...

  5. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  6. [转载+原创]Emgu CV on C# (七) —— Emgu CV on 轮廓检测

    轮廓检测 对于查找轮廓我们一般要对图像Canny检测.但是对于很特殊的场合其实我们还可以直接对二值化的图像进行轮廓的提取. 关键函数 1. cvFindContours Retrieves conto ...

  7. [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测

    Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...

  8. [转载+原创]Emgu CV on C# (三) —— Emgu CV on 均衡化

    本文简要描述了均衡化原理及数学实现等理论问题,最终利用emgucv实现图像的灰度均衡. 直方图的均衡化,这是图像增强的常用方法. 一.均衡化原理及数学实现(转载) 均衡化原理及数学实现可重点参看——& ...

  9. [转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010

    2014-08-16 最近要进行图像识别,准备利用几天的时间研究一下Emgu CV,花了一晚上功夫进行调试环境安装,期间遇到了不少问题,现梳理一下安装过程和调试过程中出现的问题. 中间有转载别人的部分 ...

随机推荐

  1. 201521123121 《JAVA程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声 ...

  2. 201521123012 《Java程序设计》第七周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代 ...

  3. Java 第六周总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  4. 201521123074 《Java程序设计》第2周学习总结

    1.本周学习总结 学习了string类的一些用法,Java编写大致与c相同,但是要注意Java是面向对象的语言.例如两个字符串"=="比较,Java与c可能会有不同结果. 学习了i ...

  5. 一步步带你做vue后台管理框架(三)——登录功能

    系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...

  6. iOS开发之UITableView中计时器的几种实现方式(NSTimer、DispatchSource、CADisplayLink)

    最近工作比较忙,但是还是出来更新博客了.今天博客中所涉及的内容并不复杂,都是一些平时常见的一些问题,通过这篇博客算是对UITableView中使用定时器的几种方式进行总结.本篇博客会给出在TableV ...

  7. 全栈工程师带你开发 ,node开发人脸识别门禁系统

    效果图:       知识点: 人脸识别SKD部署,  webRTC视频流处理,URL构建blob对象,Canvas映射截图,ajax数据交互,Node图像处理,跨域与413处理,base64解码,p ...

  8. (转)添加PROPAGATION_REQUIRES_NEW 事务没有产生作用

    最近在做事务添加时  发现自己的事务没有新建,上网查到   仅用作收藏. 其二  注意  事务的注解  应该在 内层的事务上面 一.描述 Spring遇到嵌套事务时,当被嵌套的事务被定义为" ...

  9. JDFS:一款分布式文件管理系统,第三篇(流式云存储)

    一 前言 看了一下,距离上一篇博客的发表已经过去了4个月,时间过得好快啊.本篇博客是JDFS系列的第三篇博客,JDFS的目的是为了实现一个分布式的文件管理系统,前两篇实现了基本的上传.下载功能,但是那 ...

  10. 深入理解计算机系统chapter9

    从概念上来讲:虚拟存储器被组织为一个存放在磁盘上的N个连续的字节大小的单元组成的数组. 磁盘上数组的内容被缓存到主存中 1. 读写内存的安全性 物理内存本身是不限制访问的,任何地址都可以读写,而操作系 ...