热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文由编程笔记#小编为大家整理,主要介绍了图像识别入门VS2017+Opencv的安装相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了图像识别入门 VS2017+Opencv的安装相关的知识,希望对你有一定的参考价值。


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

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

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

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

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

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

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

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

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


Visual Studio 2017 可支持 C#、C++、Python、Visual Basic、Node.js、htmlJavascript 等各大编程语言,不仅可编写 Windows 10 UWP 通用程序,甚至还能开发 iosandroid 移动平台应用,被称“宇宙最强”的集成开发环境 IDEVisual 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很大。

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

接下来就耐心等着吧。

 

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

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

 

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

再接下来是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

2vc10表示VS2010vc11对应VS2012vc12对应VS2013vc14对应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,否则返回被按键的值。

运行结果:

 

 



推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 本文详细介绍了在 Windows 7 系统中配置 Nginx 1.10.3 和 PHP 7.1.1 NTS 的步骤,包括修改 PHP 配置文件、处理依赖项以及创建批处理脚本启动和停止服务。重点解释了如何解决常见的运行时错误。 ... [详细]
  • 优化网页加载速度:JavaScript 实现图片延迟加载
    本文介绍如何使用 JavaScript 实现图片延迟加载,从而显著提升网页的加载速度和用户体验。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
author-avatar
昔日重来r_510
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有