[OpenCV+C#]开发环境的搭建
2012-06-27 19:10
288 查看
一 首先下载EmguCV,就是可以在Visual Studio2005/2008中引用OpenCV的函数的dll库。可以到这里下载:http://download.csdn.net/source/1051040 名为“Emgu.CV.Windows.Binary-1.3.0.0.zip” 二 将文件解压出来,放到哪里都可以,不过建议将解压出来的文件夹放到OpenCV的目录下面,这样不会误删吧,呵呵。 三
当然,在用EmguCV之前,要安装了OpenCV,并且OpenCV的各项配置都配置OK了,我这里说的只是配置EmguCV的。所以,请确保在配置EmguCV之前你的OpenCV的开发环境已经配置OK了。如果不会,可以看我的一篇文章。就在“学海泛舟篇”中,找找看吧。【OpenCV】Visual Studio2005的配置:http://hi.baidu.com/pengjun/blog/item/5782962b151a18f2e6cd40a4.html 四 打开Visual Studio 2005/2008,新建C#的Win32窗体应用程序。然后,点击“项目”-〉“添加引用”-〉“浏览”,然后把EmguCV1.3.0目录下的Emgu.CV.dll
Emgu.Util.dll ZedGraph.dll zlib.net.dll 都添加到引用里面,其实也不用全部添加,不过由于我们不知道有些函数在那些dll中,所以索性全添加就可以了。 五 然后,再程序的开头中加上 using Emgu.CV; using Emgu.Util; 之后就可以用EmguCV中所有的库函数了。 六 在窗体上画一个按钮,然后再按纽的下面写上如下的程序:private void btnOpenImage_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvNamedWindow("打开图片");
IntPtr img = CvInvoke.cvLoadImage(openFileDialog.FileName, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_UNCHANGED);
CvInvoke.cvShowImage("打开图片", img);
this.img = img;
CvInvoke.cvWaitKey(0);
CvInvoke.cvReleaseImage(ref img);
CvInvoke.cvDestroyWindow("打开图片");
}
}这样,我们就能用OpenCv的函数来打开和显示一个图片了。如果要保存图片可以如下:private void btnSaveImage_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvSaveImage(saveFileDialog.FileName, this.img);
}
}如果要打开一个AVI视频文件,可以如下:private void btnOpenAVI_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "AVI文件|*.avi";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvNamedWindow("打开视频");
IntPtr capture=CvInvoke.cvCreateFileCapture(openFileDialog.FileName);
this.video = capture;
IntPtr frame = new IntPtr();
while (true)
{
frame = CvInvoke.cvQueryFrame(capture);
CvInvoke.cvShowImage("打开视频", frame);
//if (!frame) break;
int c = CvInvoke.cvWaitKey(20);
if (c == 13) break;
}
//this.video = capture;
CvInvoke.cvWaitKey(0);
CvInvoke.cvReleaseCapture(ref capture);
CvInvoke.cvDestroyWindow("打开视频");
}
}要保存一个AVI文件可以如下:private void btnSaveAVI_Click(object sender, EventArgs e)
{
IntPtr avi = this.video;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
IntPtr videoWriter = CvInvoke.cvCreateVideoWriter(saveFileDialog.FileName, -1, 20, new Emgu.CV.MCvSize(480, 500), 1);
IntPtr capture=CvInvoke.cvCreateFileCapture(saveFileDialog.FileName);
IntPtr frame = new IntPtr();
while (true)
{
frame = CvInvoke.cvQueryFrame(capture);
CvInvoke.cvWriteFrame(videoWriter, frame);
}
}
}注意上面的保存AVI和打开AVI文件还存在问题:就是在AVI文件结尾处,如何退出的问题。在C++里面我们可以用if(!frame) break;来退出。但是在C#中这样是不行的,因为在C#中图片的类型是IntPtr类型。所以,在打开AVI文件的程序中,我用了cvWaitKey()的返回值来退出播放AVI文件。而在保存中没有设置什么时候保存完毕,所以,保存AVI文件会出现问题。不过,只是提供了一种思路罢了。如果想起有其他的方法来检测什么时候AVI文件播放完毕,在贴上来。
当然,在用EmguCV之前,要安装了OpenCV,并且OpenCV的各项配置都配置OK了,我这里说的只是配置EmguCV的。所以,请确保在配置EmguCV之前你的OpenCV的开发环境已经配置OK了。如果不会,可以看我的一篇文章。就在“学海泛舟篇”中,找找看吧。【OpenCV】Visual Studio2005的配置:http://hi.baidu.com/pengjun/blog/item/5782962b151a18f2e6cd40a4.html 四 打开Visual Studio 2005/2008,新建C#的Win32窗体应用程序。然后,点击“项目”-〉“添加引用”-〉“浏览”,然后把EmguCV1.3.0目录下的Emgu.CV.dll
Emgu.Util.dll ZedGraph.dll zlib.net.dll 都添加到引用里面,其实也不用全部添加,不过由于我们不知道有些函数在那些dll中,所以索性全添加就可以了。 五 然后,再程序的开头中加上 using Emgu.CV; using Emgu.Util; 之后就可以用EmguCV中所有的库函数了。 六 在窗体上画一个按钮,然后再按纽的下面写上如下的程序:private void btnOpenImage_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvNamedWindow("打开图片");
IntPtr img = CvInvoke.cvLoadImage(openFileDialog.FileName, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_UNCHANGED);
CvInvoke.cvShowImage("打开图片", img);
this.img = img;
CvInvoke.cvWaitKey(0);
CvInvoke.cvReleaseImage(ref img);
CvInvoke.cvDestroyWindow("打开图片");
}
}这样,我们就能用OpenCv的函数来打开和显示一个图片了。如果要保存图片可以如下:private void btnSaveImage_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvSaveImage(saveFileDialog.FileName, this.img);
}
}如果要打开一个AVI视频文件,可以如下:private void btnOpenAVI_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "AVI文件|*.avi";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
CvInvoke.cvNamedWindow("打开视频");
IntPtr capture=CvInvoke.cvCreateFileCapture(openFileDialog.FileName);
this.video = capture;
IntPtr frame = new IntPtr();
while (true)
{
frame = CvInvoke.cvQueryFrame(capture);
CvInvoke.cvShowImage("打开视频", frame);
//if (!frame) break;
int c = CvInvoke.cvWaitKey(20);
if (c == 13) break;
}
//this.video = capture;
CvInvoke.cvWaitKey(0);
CvInvoke.cvReleaseCapture(ref capture);
CvInvoke.cvDestroyWindow("打开视频");
}
}要保存一个AVI文件可以如下:private void btnSaveAVI_Click(object sender, EventArgs e)
{
IntPtr avi = this.video;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "BMP文件|*.bmp|JPG文件|*.jpg|JPEG文件|*.jpeg|所有文件|*.*";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
IntPtr videoWriter = CvInvoke.cvCreateVideoWriter(saveFileDialog.FileName, -1, 20, new Emgu.CV.MCvSize(480, 500), 1);
IntPtr capture=CvInvoke.cvCreateFileCapture(saveFileDialog.FileName);
IntPtr frame = new IntPtr();
while (true)
{
frame = CvInvoke.cvQueryFrame(capture);
CvInvoke.cvWriteFrame(videoWriter, frame);
}
}
}注意上面的保存AVI和打开AVI文件还存在问题:就是在AVI文件结尾处,如何退出的问题。在C++里面我们可以用if(!frame) break;来退出。但是在C#中这样是不行的,因为在C#中图片的类型是IntPtr类型。所以,在打开AVI文件的程序中,我用了cvWaitKey()的返回值来退出播放AVI文件。而在保存中没有设置什么时候保存完毕,所以,保存AVI文件会出现问题。不过,只是提供了一种思路罢了。如果想起有其他的方法来检测什么时候AVI文件播放完毕,在贴上来。
相关文章推荐
- [OpenCV+C#]开发环境的搭建
- [OpenCV+C#]开发环境的搭建
- OpenCV+C#]开发环境的搭建
- OpenCV+C#]开发环境的搭建EmguCV
- C# 下搭建最新版OpenCV(Emgu CV)开发环境
- [OpenCV+C#]开发环境的搭建
- [OpenCV+C#]开发环境的搭建
- VS2010 + C# + OpenCV 开发环境的搭建 项目配置
- Linux下C# 开发环境搭建
- 搭建Qt界面的OpenCV开发环境
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
- C#语言开发环境的搭建
- 手把手教你OPENCV FOR ANDROID之一_android开发环境搭建
- [2018.4] Mac 下搭建 opencv3.4开发环境
- ubuntu11.04下QT4.7+OpenCV2.2开发环境搭建成功,成功打开并显示图片
- IOS Mac平台上OpenCV开发环境搭建(配置)
- 用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境
- windows下vs2008/2010+opencv2.2开发环境搭建 .
- Qt Creator+MinGW+OpenCV2.3.1 开发环境搭建(windows 7 系统)
- OpenCV2.4.7与VS2010开发环境搭建