Emgu CV(OpenCV for C#)学习笔记(1)
2013-11-13 00:12
615 查看
想要自学机器视觉有关的知识,在网上摸索了好久,才了解到了OpenCV。但OpenCV开发环境是C++,可我只会点C#与VB。正琢磨学习C++,又了解到Emgu CV(OpenCV for C#),真是欣喜若狂。找到EmguCV入门指南,如奉至宝,赶紧依样画瓢,争取入门。为了加深记忆,在此做学习笔记。
下载Emgu CV安装以后,参考http://hi.baidu.com/mvp_xuan/item/144c6ddfebb1413de3108fd1,每次新建项目,应先导入UI插件,然后添加引用。具体方法如下:
导入UI插件:点击“工具(T)” -> “选择工具箱项(X)…” ,在新打开的窗口中选择:“.NET Framework组件”,点击“浏览”,到目录:C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin下,双击Emgu.CV.UI.dll即可。
看到如图四项之后,点击确定即可。
添加引用:右键单击“解决方案资源管理器”中刚才所建项目下的“引用”,选择“添加引用”;在新弹出的窗口中选择“浏览”,到安装目录:C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin下,选择:Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等共五个DLL文件,并点击确定加入。如下图所示即可:
现在开始示例学习。
第一个示例:Hello World in CSharp
Hello World - Version 1----这个是利用窗口显示Hello Word的例子。先新建窗口应用程序,删除Form1,在Program.cs中注释或删除行“Application.Run(new Form1());”,然后添加代码。如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
//增加
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using System.Drawing;
namespace Hello_World___Version_1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
string win1 = "测试窗口";
//创建测试窗口
CvInvoke.cvNamedWindow(win1);
//创建400*200的蓝色图像
using (Image<Bgr, Byte> img = new Image<Bgr, byte>(400, 200, new Bgr(255, 0, 0)))
{
//文字
MCvFont f = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
//用定义的文字在图上画"Hello,World."
img.Draw("Hello,World.", ref f, new Point(10, 80), new Bgr(0, 255, 0));
//显示图像
CvInvoke.cvShowImage(win1, img.Ptr);
//等待按键事件
CvInvoke.cvWaitKey(0);
//释放窗口
CvInvoke.cvDestroyWindow(win1);
}
}
}
}
运行后如下图:
Hello World - Version 2----用ImageViewer类显示图像。代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
//增加
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;
using System.Drawing;
namespace Hello_World___Version_1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
//创建400*200的蓝色图像
using (Image<Bgr, Byte> img = new Image<Bgr, byte>(400, 200, new Bgr(255, 0, 0)))
{
//文字
MCvFont f = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
//用定义的文字在图上画"Hello,World."
img.Draw("Hello, world", ref f, new Point(10, 80), new Bgr(0, 255, 0));
//用Emgu.CV.UI名称空间下的ImageViewer类显示图像
ImageViewer.Show(img, "Test Window");
}
}
}
}
运行后如下图:
下载Emgu CV安装以后,参考http://hi.baidu.com/mvp_xuan/item/144c6ddfebb1413de3108fd1,每次新建项目,应先导入UI插件,然后添加引用。具体方法如下:
导入UI插件:点击“工具(T)” -> “选择工具箱项(X)…” ,在新打开的窗口中选择:“.NET Framework组件”,点击“浏览”,到目录:C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin下,双击Emgu.CV.UI.dll即可。
看到如图四项之后,点击确定即可。
添加引用:右键单击“解决方案资源管理器”中刚才所建项目下的“引用”,选择“添加引用”;在新弹出的窗口中选择“浏览”,到安装目录:C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin下,选择:Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等共五个DLL文件,并点击确定加入。如下图所示即可:
现在开始示例学习。
第一个示例:Hello World in CSharp
Hello World - Version 1----这个是利用窗口显示Hello Word的例子。先新建窗口应用程序,删除Form1,在Program.cs中注释或删除行“Application.Run(new Form1());”,然后添加代码。如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
//增加
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using System.Drawing;
namespace Hello_World___Version_1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
string win1 = "测试窗口";
//创建测试窗口
CvInvoke.cvNamedWindow(win1);
//创建400*200的蓝色图像
using (Image<Bgr, Byte> img = new Image<Bgr, byte>(400, 200, new Bgr(255, 0, 0)))
{
//文字
MCvFont f = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
//用定义的文字在图上画"Hello,World."
img.Draw("Hello,World.", ref f, new Point(10, 80), new Bgr(0, 255, 0));
//显示图像
CvInvoke.cvShowImage(win1, img.Ptr);
//等待按键事件
CvInvoke.cvWaitKey(0);
//释放窗口
CvInvoke.cvDestroyWindow(win1);
}
}
}
}
运行后如下图:
Hello World - Version 2----用ImageViewer类显示图像。代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
//增加
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;
using System.Drawing;
namespace Hello_World___Version_1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
//创建400*200的蓝色图像
using (Image<Bgr, Byte> img = new Image<Bgr, byte>(400, 200, new Bgr(255, 0, 0)))
{
//文字
MCvFont f = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
//用定义的文字在图上画"Hello,World."
img.Draw("Hello, world", ref f, new Point(10, 80), new Bgr(0, 255, 0));
//用Emgu.CV.UI名称空间下的ImageViewer类显示图像
ImageViewer.Show(img, "Test Window");
}
}
}
}
运行后如下图:
相关文章推荐
- Emgu CV(OpenCV for C#)学习笔记(3)
- Machine learning for openCV 学习笔记 day1
- c# opencvsharp学习笔记(1)
- OpenCV for Ios 学习笔记(1)-配置
- C# OpenCV学习笔记一之准备工作
- C# OpenCV学习笔记四之图像二值化
- OpenCV中parallel_for 和 parallel_for_学习笔记
- OpenCV中parallel_for 和 parallel_for_学习笔记(加详细注释)
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- C# OpenCV学习笔记六之人脸识别/五官识别测试
- OpenCV for Ios 学习笔记(3)-camera
- Machine learning for OpenCV 学习笔记 day6
- c# opencvsharp学习笔记(3)兴趣区域ROI,图像叠加,操作像素点
- OpenCV for Ios 学习笔记(7)-标记姿态的模拟
- C# OpenCV学习笔记七之图片相似比较
- OpenCV for Ios 学习笔记(10)-标记检测总结
- 9、TX2学习笔记--Building OpenCV for Tegra with CUDA
- OpenCV for Ios 学习笔记(5)-标记检测2
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- OpenCV for Ios 学习笔记(9)-用OPENGL渲染AR场景2