EmguCv在VS2012中的配置方法_CSharp_win7
EmguCv 将OpenCv的绝大部分功能都包装成了.net类CvInvoke,该类使得CSharp可以直接调用OpenCv的函数,在这个类中的函数均对应于OpenCv中的同名函数。《验证码识别之C#图像识别类库tessnet2》一文中提及tessnet2识别前景与背景对比度差的图片能力不佳,理论上而言,如果验证码的图片可以成功二值化,那么tessnet2的识别率应该会高一些。因此,我开始尝试折腾EmguCv,试用成功,记录下试用过程,供需要的同学参考。
1.系统环境:win7 + VS2012
原本一直用的是VS2008,但近期在github上下载的几个C#源码都是在VS2012平台上的,因此我电脑上的VS2008被VS2012取代。
2.EmguCv下载
下载地址:http://downloads.sourceforge.net/project/emgucv/emgucv/2.4.10/libemgucv-windows-universal-cuda-2.4.10.1940.exe
我是2015年2月7日下载的,当天最新版本:2.4.10。
3.EmguCv安装
安装基本无须操心,途中安装程序会征询VS版本相关的问题,根据自己的VS版本选择即可。
4.EmguCv环境变量配置
设置环境变量的步骤如下:
计算机–>属性–>高级系统设置–>高级–>环境变量–>找到“Path”–>编辑
在该变量值的最后面添加”emgu的安装路径\bin\x86″,例如:D:\Program Files\Emgu\emgucv-windows-universal-cuda 2.4.10.1940\bin\x86,注销或重启计算机,令路径生效。
我在path中添加了两个路径:D:\Program Files\Emgu\emgucv-windows-universal-cuda 2.4.10.1940\bin\x86;D:\Program Files\Emgu\emgucv-windows-universal-cuda 2.4.10.1940\bin;
5.在已有项目中添加EmguCv的引用
点选“项目解决方案”,右键–>引用–>浏览–>在Emgu的安装路径\bin文件夹下找到并添加Emgu.CV,emgu.CV.UI,emgu.Util。
在当前项目中添加如下using项:
1 2 3 |
using Emgu.CV; using Emgu.CV.UI;//控制台程序可不加此项 using Emgu.Util; |
5.EmguCv 功能初步验证
上述步骤执行完成后,我们来小试一下牛刀,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//cvLoadImage参数1:加载图片的路径 //cvLoadImage参数2:(-1):默认读取图像的原通道数;(0):强制转化读取图像为灰度图;(1):读取彩色图; IntPtr bmpP = CvInvoke.cvLoadImage(@"D:\CSharp\TessNetTest\ReCaptcha2.jpg",0); //临时变量 IntPtr tmpPtr = bmpP; //用于存储大津法处理后的图片 IntPtr otsuPtr = bmpP; //cvThreshold:对图像进行二值化处理,我选择了用"大津法"对图像进行二值化 CvInvoke.cvThreshold(bmpP, otsuPtr, 0, 255, Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU); //cvSaveImage:将处理后的图片进行存储,第三个参数有点奇怪,该函数就指明需要一个临时的指针变量 // stackOverFlow中有人说这是程序设计的不合理 CvInvoke.cvSaveImage("ReCaptcha2_onlyOTSU.jpg", otsuPtr, tmpPtr); |
该函数处理后的效果如下: