图像识别入门 VS2017+Opencv的安装

今早老师给我了个任务很急,把图像处理成word,我一看不多,就觉得自己打就好了,但是没想到TIM图片自带了文字识别,这就省了很多的时间,给大家看看效果。

不得不感慨图像识别的强大,但是这又是怎么个过程呢,能不能做个图像识别让机器可以识别我的脸呢?经查找,现在电脑图像处理算法的实现工具主要是Matlab和Opencv。

计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:

1、研究代码(慢,不稳定,独立并与其他库不兼容)

2、耗费很高的商业化工具(比如Halcon,MATLAB+Simulink)

3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。

OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。下图为OpenCV与当前其他主流视觉函数库的性能比较。

Visual Studio 2017可支持 C#、C++、Python、Visual Basic、Node.js、HTML、JavaScript等各大编程语言,不仅可编写Windows 10UWP 通用程序,甚至还能开发iOS、Android移动平台应用,被称为“宇宙最强”的集成开发环境 IDE。Visual Studio 2017作为业界 IDE 的领头羊,无论是学习还是工作,只要你对开发对编程感兴趣,都值得下载尝鲜研究。而且免费的VS2017 社区版也适合大多数情况,微软还是很厚道的。

强大的开发环境+一个开源的图像检测、识别和图形处理库,可以完成非常丰富的机器视觉的功能。

如何下载OpenCV安装程序,如何在VS2017下安装配置OpenCV?

首先OpenCV下载可以到http://www.opencv.org.cn/index.php/Download,然后选一个较新版本下载,我下的是V3.4.1版本。

VS2017的下载可以到微软官网上https://visualstudio.microsoft.com/zh-hans/下载vs_community,

VS2017下载好接下来安装,遇到的第一个问题是工作负载和安装位置,尽量不要把全部东西都放到C盘因为vs很大。

接下来就耐心等着吧。

然后重启电脑,第一次可能会时间长点,安装完成。

再接下来是OpenCV,选则你的安装目录安装,运行。

在我的电脑中配置OpenCV

在“我的电脑”右击弹出“系统属性”对话框,选择“高级”再点击“环境变量”,然后再编辑path,在“编辑用户变量”对话框的变量值输入以下三条,注意用“;”来分开。环境变量配置:我的电脑右键单击->属性->系统高级设置->高级->环境变量

D:\opencv\build\x64\vc14\bin;

D:\opencv\build\x64\vc15\bin;

然后在VS2017中加入OpenCV;

新建vc++空项目,工程中右击–>属性

包含目录+库目录+链接器

1.包含目录 配置:

VC++目录—>包含目录:

D:\opencv\build\include;

D:\opencv\build\include\opencv;

D:\opencv\build\include\opencv2

2.库目录 配置:

VC++目录—>库目录:

D:\opencv\build\x64\vc15\lib

注意:(1)此处的x64表示电脑是64位,32位选择x86

(2)vc10表示VS是2010,vc11对应VS2012,vc12对应VS2013,vc14对应VS2015 ,vc15对应VS2017

3.链接器 配置:

链接器–>输入–>附加依赖项

opencv_world341.lib

opencv_world341d.lib

备注:

工程建好,你还要添加源.Cpp才能运行。

这里是我从网上得的测试程序:

//显示图像文件

#include

usingnamespacestd;

//using namespace std 的意思是:“使用命名空间std”.C++标准库中的类和函数是在命名空间std中声明的,因此程序如果需要用到C++标准库,就需要用“using namespace std”作声明,表示要用到命名空间std中的内容。

#pragmacomment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

intmain()

{

constchar*pstrImageName ="D:/abc/1.jpg";

constchar*pstrWindowsTitle ="OpenCV first";

//从文件中读取图像

IplImage*pImage = cvLoadImage(pstrImageName,CV_LOAD_IMAGE_UNCHANGED);

//创建窗口

cvNamedWindow(pstrWindowsTitle,CV_WINDOW_AUTOSIZE);

//在指定窗口中显示图像

cvShowImage(pstrWindowsTitle, pImage);

//等待按键事件

cvWaitKey();

cvDestroyWindow(pstrWindowsTitle);

cvReleaseImage(&pImage);

return0;

}

主要函数说明:

1.创建窗口cvNamedWindow

函数名称:cvNamedWindow

函数功能:创建窗口

函数原型:

int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );

参数说明:

第一个参数表示窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。被创建的窗口可以通过它们的名字被引用。

第二个参数表示窗口属性标志。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像。

函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。

注意:

如果已经存在这个名字的窗口,这个函数将不做任何事情。

2.在指定窗口中显示图像cvShowImage

函数名称:cvShowImage

函数功能:在指定窗口中显示图像

函数原型:

void cvShowImage( const char* name, const CvArr* image );

参数说明:

第一个参数:窗口的名字。

第二个参数:被显示的图像。

3.等待按键事件cvWaitKey

函数名称:cvWaitKey

函数功能:等待按键事件

函数原型:

int cvWaitKey( int delay=0 );

参数说明:

第一个参数:延迟的毫秒数,当delay

函数返回值:

如果超过指定时间则返回-1,否则返回被按键的值。

运行结果:

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190105G04BZG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券