作者:昔日重来r_510 | 来源:互联网 | 2023-09-12 07:57
本文由编程笔记#小编为大家整理,主要介绍了图像识别入门 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 10 UWP 通用程序,甚至还能开发 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:opencvuildx64vc14in;
D:opencvuildx64vc15in;
然后在VS2017中加入OpenCV;
新建vc++空项目,工程中右击–>属性
包含目录 + 库目录 + 链接器
1. 包含目录 配置:
VC++目录—>包含目录:
D:opencvuildinclude ;
D:opencvuildincludeopencv;
D:opencvuildincludeopencv2
2. 库目录 配置:
VC++目录—>库目录:
D:opencvuildx64vc15lib
注意:(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
using namespace std;
//using namespace std 的意思是:“使用命名空间std”.C++标准库中的类和函数是在命名空间std中声明的,因此程序如果需要用到C++标准库,就需要用“using namespace std”作声明,表示要用到命名空间std中的内容。
#pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")
//这句话的解释https://blog.csdn.net/birdflyto206/article/details/51278468
int main()
{
const char *pstrImageName = "D:/abc/1.jpg";
const char *pstrWindowsTitle = "OpenCV first";
//从文件中读取图像
IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
//创建窗口
cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
//在指定窗口中显示图像
cvShowImage(pstrWindowsTitle, pImage);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsTitle);
cvReleaseImage(&pImage);
return 0;
}
主要函数说明:
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<=0时表示无限等待。
函数返回值:
如果超过指定时间则返回-1,否则返回被按键的值。
运行结果: