图像处理(一)手把手图文教你安装Qt5.7.0+(Win7,32位)OpenCV3.0(VC12)+VS2013安装配置(这个肯定行!!!)

前言。

WIth the developed of the economy 额。。。。。呸! 在当今博文良莠不齐的大环境下,本菜鸟尽量秉持科学,严谨,细致的态度记录以下内容,目的是为了让后来的小伙伴能够轻松的下载好所有东西并愉快的玩耍,而不至于还没入门就迷晕在门槛上。不要嫌我描述啰嗦,我也是为你们好,全网比我专业的有的是,但是可能找不出比我还小白的解释了。如果仅仅是为了记录成长,本文没什么技术含量,我都懒得写。但是想起我那各种安装,各种试,各种卸载的苦逼的曾经,我决定还是为大家安利一波吧。

我的电脑是双系统,有Win10 64bit 和 Win7 32bit。所以说,大家不要迷茫,本文是在我把每个系统都试了一次并成功的基础上写的。

当初照着网上的教学指南在Win10 64bit下安装VS2015配置OpenCV成功了,也能做图像处理的作业,但是下载QT再配置的时候就出现了各种问题,然后看了官方的介绍之后打算使用Win7 32位的系统重新下一遍。第一部分主要讲的是我当初怎么一步步实现在Win10下安装配置OpenCV的(这部分只适用于初学者,它是用VS2015去直接连接OpenCV的原本库,本人不建议使用,大家看一眼就行了在第二部分开头简单解释了第一部分中的原本库与自建库之间的区别),第二部分讲的是怎么在Win7(Win10也一样)下安装配置OpenCV私人的(用到了Cmake构件私人OpenCV自建库,适用于入门者,推荐使用),第三部分讲的是在基于第二部分的基础上下载和配置QT的教程(大多数人要的就是这个,推荐使用)。估计可能有一部分小白看我手把手的博文也看不懂,可以在下方留言催我做个教学视频,传到B站上去(催的人多了我会去录,人少了就不弄了,挺费事的)。

你的电脑是什么系统的,多少位的,在软件下载包的选择上要注意区分。尤其是在Win10上下载Qt和配置的时候,从下载CMake开始就出现各种问题,最后同样的代码在Qt5上就运行不了,大多数的原因是你一开始就安装错误。

我也是小白,我也不会做事后故障判断。就去Youtube和OpenCV的官网上找到了官方以Win7,32位的和Win10,64位的示范系统的安装教程,所幸我的电脑做了双系统,把英文的说明看懂了之后,一步步的都装成功了,现在把它的中文版发在这。

大家小心翼翼的跟我来,手把手的从一开始就都弄对,往后就不会出现一堆问题了。

不管你的电脑是啥系统的,支持多少位的,我下文都是记录处理问题的方法,你都可以照猫画虎的自己搭配合适的配置。

第0部分,首先我们要知道怎么根据自己的电脑搭配各环节。(假设我们要在Win10 64位下搭建)

先说Qt是啥?

Qt是商业和开源许可的跨平台应用程序和UI框架。它是由Qt Company和Qt Project Community在开源治理模型下开发的。使用Qt,您只需编写一次GUI应用程序,即可在桌面,移动和嵌入式操作系统中部署它们,而无需重写源代码。Qt在各种32位和64位平台上受支持,并且通常可以使用GCC,供应商提供的编译器或第三方编译器在每个平台上构建。 Qt Quick 2需要OpenGL(ES)2.0,DirectX 9(带有ANGLE)或其他渲染器。无需硬件加速即可使用小部件。在Qt 5中,所有平台都是使用Qt平台抽象(QPA)创建的,这比以前更容易将Qt移植到新的操作系统中。(以上内容2017年6月15日官方更新)


综上所述Qt就是我们做图像处理的编辑软件


下表列出了Qt公司支持的配置。配置是操作系统版本,编译器版本和图形系统的组合。

(数据来自官方网站https://doc.qt.io/archives/qt-5.7/supported-platforms.html

所以说Win10 64bit的要用VS2015?问题出在这了?所以才各种Errors吗?我也不知道啊,官方的嘛,听他的吧。。。

去“我的电脑”,右键打开属性,确认我的电脑是Win10,64位的。(这是我另一个系统,本文第二步以后都是用Win7 32位装的)

 

第二个问题,啥是OpenCV?

OpenCV(开源计算机视觉库)是一个开源计算机视觉和机器学习软件库。 OpenCV的构建旨在为计算机视觉应用程序提供通用的基础结构,并加速在商业产品中使用机器感知。作为BSD许可的产品,OpenCV使企业可以轻松地使用和修改代码。

该库具有2500多种优化算法,其中包括一整套经典和最新的计算机视觉和机器学习算法。这些算法可用于检测和识别面部,识别对象,对视频中的人为行为进行分类,跟踪摄像机的运动,跟踪运动的对象,提取对象的3D模型,从立体摄像机生成3D点云,将图像拼接在一起以产生高分辨率整个场景的图像,从图像数据库中查找相似的图像,从使用闪光灯拍摄的图像中消除红眼,跟随眼睛的移动,识别风景并建立标记以将其与增强现实叠加在一起等。OpenCV拥有超过4.7万人的用户社区,下载量估计超过1800万。该库在公司,研究小组和政府机构中得到广泛使用。

除了使用该库的Google,Yahoo,Microsoft,Intel,IBM,Sony,Honda,Toyota之类的知名公司外,还有许多新兴公司(例如Applied Minds,VideoSurf和Zeitera)广泛使用OpenCV。 OpenCV的部署用途包括将街景图像拼接在一起,检测以色列监视视频中的入侵,监视中国的矿山设备,帮助机器人在Willow Garage导航和拾取物体,检测欧洲游泳池溺水事故,在西班牙和纽约,在土耳其检查跑道上的碎屑,检查世界各地工厂产品上的标签,然后在日本进行快速面部识别。

它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。 OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令。目前正在积极开发功能齐全的CUDA和OpenCL接口。有500多种算法,而构成或支持这些算法的功能大约是其10倍。 OpenCV用C ++原生编写,并具有可与STL容器无缝配合的模板化接口。

(以上内容来自官网https://opencv.org/about/)

总是所述,OpenCV就是我们Qt软件的库呗。

OpenCV库的VC12版本对应微软的VS2013版本。vc10–VS2010,vc11——VS2012,vc12——VS2013,vc14对应VS2015了。

我当初看了OpenCV官网(https://opencv.org/releases/)最新的是OpenCV4.1.1(它自带V14和V15,就选的它)

第三个问题,啥是CMake?

CMake是旨在构建,测试和打包软件的开源,跨平台工具系列。 CMake用于使用简单平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作区。 CMake工具套件是由Kitware创建的,旨在满足ITK和VTK等开源项目对强大的跨平台构建环境的需求。

(上文参考官网https://cmake.org/

总之CMake就是用来帮你自动生成(Build)OpenCV项目库的,举个例子,有的人玩过树莓派吧,大家一开始装系统的时候生成的根(Root)目录就相当于CMake给生成的东西(后文我们也可以把这个库文件夹名字叫做“Root”)。

这个在官网上下载最新的版本就行了。当前最新版本是3.16.0。

第四个问题,Qt软件有的带MingGW,有的带VS,这俩有啥区别?

MingGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。
虽然Qt可以安装自带MingGW(可以自行编辑不需要求助于VS2015啦),但是VS2015在匹配上OpenCV库以后,能够更专业和方便的编译和修改代码。最关键的是,大佬们都爱使用VS。

好的,现在我们屡清楚了,如果是配置最新款的,那么就是:

Qt要Windows64位的+MSVC2015的环境+OpenCV4.1.1(V14)+CMake3.16

先附上各软件连接,下载顺序从上到下

等一下,建议你,下文先阅读一遍再决定选择哪个部分follow me安装,第一部分就是小白级别,每步都是非常细致的图文解说。老手不看也行,第二部分就是新手级别,我详细的记录了我的操作,保证不差一步的确保follow me 无报错。第三部分是入门级,新手可以在第二部分的基础上下载安装QT,配置各种环境。为了避免大家看的脑袋疼,并保证科学严谨细致的阐述,我把它分成三个博客了。这是第一个博文,第二个博文记录了第三部分内容的操作。第三个博文记录了主要是由我写的(不全是我写的,算法是Github上我学长Cesar的)手指指尖识别算法与实现。干货啊,好人呐2333

第一部分,下载VS2015与配置OpenCV(小白级别,可看可试,但是还是建议用Cmake的自建库也就是第二部分)

一,MSVC2015(https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/)选择英文的比较好。

我是学生,所以我下的是Community的,就是个人免费版的。

双击打开它,选择默认路径就行,然后安装

有点漫长啊啊啊啊。。。ZZZZZZZZ。。。。如果你家网快的话还是选择下载DVD那个大镜像吧,哎觉得省点地方才下的官方在线安装包,结果速度实在是太太太太慢了。

最逗比的是安装完事之后,它会警告你,VS2015没有安装C++。

要打开这个软件VS2015手动安装C++。

当你登录微软账号的时候,它还会提示你要先选择开发环境,肯定没有C++,所以我们先选个普通的(General)

继续,一通正常操作(没啥要注意的,我觉得,而且当初下的时候没有更多的截屏了)然后Finish。

双击打开软件,新建项目(File>>New>>Project),就会出现一个窗口,在左边点击C++,

双击选择“安装Windows平台工具”。

点击Continue

全选,然后点击Next,再点Updata。等他更新。然后就完事了。

二,OpenCV库(https://opencv.org/releases/)上文说了怎么选。

安装路径我放C盘了,放别的地方也行,但是要记住这个位置,后文的配置要用。

现在我们要试一下,VS2015配合OpenCV能不能用,用示例程序是去生成一个图片。

首先我们要配置OpenCV的PATH到电脑上:

右键打开“我的电脑”的“属性”,打开“高级系统设置”里面的“环境变量”

 

在这俩PATH中,新建(New)OpenCV路径,打开C盘(你把OPENCV安装到哪了打开哪),配置path的目的主要是保证在运行时,程序能够找到对应的dll文件;VS2015,选择vc14;

在系统变量里的Path中添加:

C:\opencv\build\x64\vc14\bin

C:\opencv\build\bin

然后确定(OK),然后手动重启计算机。

其次我们要打开VS2015,然后将OpenCV库配置到VS2015上:

打开软件,新建个工程,然后操作如下:

然后选择创建空的文件

然后点击完成。

在View(视图)中下拉菜单,点击其它窗口,再点击属性管理器(Property Manager),找到Debug|Win32右键点击添加新项目属性表

命名为opencv_debug.props,此文件就是为以后永久性配置的,下次新建解决方案时直接加载它就可以了。

然后,打开该属性页,修改其中VC++目录的包含目录和库目录两项:

 

然后打开电脑文件夹的C盘(OpenCV的实际安装位置),找到下图所示位置

然后我们就得到了包含目录(Include)的地址:

C:\opencv\build\include

C:\opencv\build\include\opencv2

把这俩添加到下图所示的包含目录中。

同理回到C盘去搜库目录(Library)的地址

C:\opencv\build\x64\vc14\lib

添加好库目录的搜寻地址

然后,打开这个属性窗的链路器(Linker),选择输入(Input),在附加依赖项中添加:

依赖项的地址在VC14中,官方说添加world411这个就行了:

opencv_world411.lib

然后,先点击Apply再点击OK。

我把随便一张叫1.jpg的图片放C盘下了

现在回到VS2015,如下图所示在try1项目下新建一个Item

然后打开新创建的Source.cpp文件,并复制如下代码:

#include <opencv2/opencv.hpp> //我们的opencv/Include
using namespace cv;
int main()
{
	
	Mat img = imread("C:\1.jpg");// 读入一张图片 
	namedWindow("666");// 创建一个名为 "666"的窗口  
	imshow("图片名字", img);// 在窗口中显示图片名字
	waitKey(10000);// 等待10 s后窗口自动关闭 
}

然后点击F5编译,编译成功。。。。。没有。有时候他会提示XXX.dll文件打不开。

这时把…\opencv\build\x64\vc14\bin目录下的几个dll文件复制到C:\Windows\system32目录下。

再按,F5配置成功

我总结一下,上文我就是下载了个VS2015,然后用VS2015使用了openCV默认库。

第二部分,使用Cmake搭建自己的库,并使用VS2013(Win7,32位)运行一个颜色识别的例程(新手够用了,推荐使用)

你若是看了第0部分的话,你就知道了其实无论是用Windows几,无论多少位的,安装都应该差不多。实际上是的,我分别用Win10 64位和Win7 64位安装并配置了OpenCV库,并成功的在VS2013/2015上运行了。都成功,所以不要怕。咱们慢慢来。

第一部分是直接调用OpenCV的预构件库,第二部分是自己配置源文件库。

有人会问,那直接用第一部分就行了啊,哪里还需要去自己构件库去?多费事啊???

为什么大多数人还是去使用Cmake去自建库?

因为:1,大多数攻略非常雷同的用Cmake。(PS:我可没说你们的博客是抄来抄去的啊,局座,我可是什么都没有讲啊)

           2,OpenCV官网原话:“使用OpenCV库,您有两个选择:通过使用预构建的库进行安装或通过从源文件构建自己的库进行安装。 尽管第一个比较容易完成,但是只有在您使用最新的Microsoft Visual Studio IDE进行编码并且没有利用我们集成到库中的最先进技术的情况下,它才有效。”(摘录传送门:https://docs.opencv.org/2.4/doc/tutorials/introduction/windows_install/windows_install.html)

OK,废话少说,决定还是用Cmake了,开干:

下载与安装:

一,Visual Studio 2013 or Visual Studio 2015

什么系统下哪个请见第0部分的推荐。Win10 用vs2013也可以,但是有时候有未知错误,我把VS2013换上VS2015后就好了。

这俩的区别就是VS2015没有C语言编辑器,需要额外下载C++模板。下载C++编辑器模块的具体操作:

下载地址上面都有,还是觉得我说的不详细的同学可以看这个链接(https://blog.csdn.net/qq_32795773/article/details/95614736

我找到了一端关于VS2015与OpenCV运行出错的恩怨情仇官方说明:

Note: As of when OpenCV 3.0.0 was released Visual Studio 2015 was not yet available and therefore Visual Studio 2015 could not be tested with OpenCV 3.0.0 before release. Also, as of the time this is being written the most current build of Qt (5.5.0) supports Visual Studio 2013 but not 2015. Therefore if you are using OpenCV 3.0.0 and Qt 5.5.0 it is recommended to perform the remaining steps in this tutorial with Visual Studio 2013. If you are using any version of OpenCV after 3.0.0 and a later version of Qt that supports Visual Studio 2015 then either Visual Studio 2013 or 2015 will work.

这话是摘自YouTube上一官方大神的教学视频,他上传的时间整好是VS2015刚出来的时候。

简单点说,就是:Qt(5.5.0)版本支持Visual Studio 2013,但不支持2015。如果您使用3.0.0之后的任何版本的OpenCV,以及支持Visual Studio 2015的更高版本的Qt,则可以使用Visual Studio 2013或2015。咱们用OpenCV3.1,所以上文当我没说,哈哈哈哈哼哼

二,下载Cmake(https://cmake.org/)

Cmake是啥,上面介绍了,打开官网,下载最新版本的就行了,注意你电脑是多少位的就下载多少位的。

'.msi'文件的意思是直接下载镜像文件。

如果CMake安装在开始之前挂起,重新点安装,然后双击CMake下载并选择“以管理员身份运行”,而不是双击CMake下载。

在CMake安装期间,选择选项“为所有用户将CMake添加到系统PATH”(对于所有其他选项,默认设置都可以)

安装完了之后重启电脑。

 

三,下载Qt: (http://download.qt.io/archive/qt/5.7/5.7.0/)

要5.7.0的(额,因为我老师用这个,我觉得遇到问题了,好去问他,所以就用这个)

选择下哪个版本的你自己看着办(版本高于5.5.0的就行),比如说下面这个是适用于VS2015的,兼容32位和64位Windows的QT

 

/***************下载前请注意:!!!!!!!!以下内容请在下载前认真阅读!!!!!!!***********************************/

1. 不要用Qt Online Installer,这个网上下载器太慢了,我用学习的光纤wifi能墨迹1小时。而且这个网上下载器是默认下载64位的Qt,这把32位的小伙伴哭了。

2. 在Qt页面上,单击“立即下载”,进一步向下滚动到“查看所有下载”,这应列出32位Qt的MSVC版本的脱机安装程序作为选择

/****************************************************************************************************************************************/

具体操作如下:

打开QT官网(https://www.qt.io/download-qt-installer?hsCtaTracking=99d9dd4f-5681-48d2-b096-470725510d34%7C074ddad0-fdef-4e53-8aa8-5e8a876d6ab4

打开网页,鼠标滚轮拉到最下面:

我们去下载脱机包。

下载Windows用户下图所示:

还要下载VS IDE兼容的C语言编辑包

下载完事都点击安装就行了(默认安装设置)

在文件资源管理器中,导航到Qt bin目录,该目录应具有各种Qt DLL,例如,导航至

C:\Qt\Qt5.7.0\5.7\msvc2013\bin

然后发现里面有一大列的各种.dll文件(例如:Qt5Cored.dll, Qt5Widgetsd.dll之类的),那就说明你安装成功。

然后把QT的bin的路径(C:\Qt\Qt5.7.0\5.7\msvc2013\bin)添加到电脑的环境变量中:(这步做不对的话Cmake找不到dll就各种报错

具体操作如下:

右键打开“我的电脑”的“属性”,打开“高级系统设置”里面的“环境变量”

 

在下图所示的那个红框中的PATH,新建(New)OpenCV路径,打开C盘(你把QT安装到哪了打开哪),配置path的目的主要是保证在运行时,程序能够找到对应的dll文件;

在系统变量里的Path中添加:

C:\Qt\Qt5.7.0\5.7\msvc2013\bin

 

然后确定(OK),然后手动重启计算机

 

四,下载OpenCV(https://opencv.org/releases/)

怎么选在第0步已经给大家介绍了。vc10–VS2010,vc11——VS2012,vc12——VS2013,vc14对应VS2015了。

下载然后安装。

我的是VS2013的,所以选择了带VC12的OpenCV3.0.0,也安装了3.1.0。

有人会问,为啥要安装两个?

我乐意。

O(∩_∩)O哈哈~实际上是我老师用的是3.1的,完事我发现3.1不支持32位的,所以我下载了3.0.

不信的话,请见下图:

 

然后打开你刚下的文件(eg.OpenCV-3.0.0)然后发现只有个文件夹叫:"opencv"。你在当前文件夹新建个文件夹,

命名为“mybuild”(名字随便起啦,这就是你的新库的文件夹名)

 

注意:若是你之前就以及手快的把OpenCV的路径给附加到电脑系统的环境变量中了(具体如第一步所述),你要把它删除。因为我们现在要重新生成自建库,将会产生新的路径,要避免新老路径冲突。

好了该安装的我们都装好了。接下来要开始使用Cmake生成自建库(mybuild)了

 

Cmake的自建库安装与配置:

把你的Cmake软件安装好之后打开。见到如下界面:(我把要填的地方按操作顺序圈好了)

第一步:将“Where is the source code:”设置为你的OpenCV源目录;

第二步:将“Where to build the binaries:”设置为你的OpenCV mybuild目录;

第三步:按下图所示的那个"Configure"按钮

然后就会出现一个窗口,

第四步:选择你的VS编辑器版本 "Visual Studio 12 2013" 或者"Visual Studio 14 2015",我是用的是前者,大家根据自己安装的哪年的自行选择。(从下拉菜单中选择)(不要选择64位选项,标题为“ Visual Studio XX 201X Win64”不然会出错!!!), 选择“Use default native compilers”单选按钮,然后选择“Finish”

然后,等下图的绿条读满

第五步:等绿条读满后,就看见一大列红色的可选条目。 向底部滚动并找到“ WITH_QT”,把它勾上。

             然后再次按Configure”。

第六步:再过一会,以前的行现在应该是白色,而与Qt有关的新行仅是红色。

              第三次按“Configure”,片刻之后所有行现在应为白色。

第七步:按下 "Generate"

在这过程中可能会一直重复一个错误,那是版本问题,对自建库没什么影响。不用管它

然后过一会就看见它“Generate done”了

第八步:这时在你的OpenCV mybuild目录中。我的是 “ D:\OpenCV\V3.0\mybuild2”应该有一个文件“ OpenCV.sln”,这是常规的Visual Studio解决方案文件

细心的人可能会发现我新建的库的名字本来是“mybuilt”结果变成“mybuilt2”了,不要在意这无关紧要的细节,因为我是为了向大家展示我怎么弄得,就重新又用Cmake建了一个新库。

第九步:双击“ OpenCV.sln”在Visual Studio中打开,

看上面的图,等我圈的第一个红框位置加载完毕之后,再去

确认“解决方案配置(Solution Configurations)”和“解决方案平台(Solution Platforms)”分别设置为“调试(Debug)”和“ Win32”,然后选择“生成(Build)->生成解决方案(Build Solution)”

然后你需要等7分钟左右,因为OpenCV的库很大,编译费点时间,不过别担心,第一次才费时,下次用就很快了。

然后你就看见左侧有一大列OpenCV的库目录了:

编译完成后,你可能会收到多个警告

和与“ python27_d.lib”有关的链接器错误,只要该错误仅与Python有关就可以了。

对咱们用C++编程的人来说,没啥影响。如果你非要Python编程,你需要去查相关.lib缺失应该去哪下载,回头补在你的自建库里就行了。

第十步:Cmake就没它啥事了,可以关闭了。最后一步,就是确认你把之前的OpenCV原装库的环境变量的路径(如果你有的话)换成新建库的路径。如果之前你是跟着第二部分来的,那就去环境变量那再添加一次自建库的新路径。

例如你之前有:C:\OpenCV-X.X.X\opencv\build\x86\vcXX\bin

那就把它替换成(没有就添加如下):C:\OpenCV-X.X.X\mybuild\bin\Debug

具体怎么换环境变量,去哪找,上面有。。。

好吧,我还是重复一句吧:右键打开“我的电脑”的“属性”,打开“高级系统设置”里面的“环境变量”

你还可以去新建的C:\OpenCV-X.X.X\mybuild\bin\Debug目录下查看,你会发现,诸如:opencv_calib3d300d.dll,
opencv_core300d.dll, opencv_features2d300d.dll之类的.dll文件已经出现在你的文件目录中了,说明自建完成。

你还可以去电脑的命令窗口输入“path”检测OpenCV自建库的新目录路径是否已经保存:

好了现在大功告成了。把没用的窗口都关闭。重启电脑。

 

打开Visual Studio 验证OpenCV自建库的实用性(附代码展示):

我们现在用一段用来检测红色球体的图像识别程序进程VS实用性的测试。程序代码在下文给出。我们知道在C语言编码中,常用的保存文件为".c",在图像处理的VS中常用的是“.cpp”文件。

// 保存名为RedBallTracker.cpp的文件

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

#include<iostream>

///
int main() {
	cv::VideoCapture capWebcam(0);		// declare a VideoCapture object and associate to webcam, 0 => use 1st webcam

	if (capWebcam.isOpened() == false) {				// check if VideoCapture object was associated to webcam successfully
		std::cout << "error: capWebcam not accessed successfully\n\n";	// if not, print error message to std out
		return(0);														// and exit program
	}

	cv::Mat imgOriginal;		// input image
	cv::Mat imgHSV;
	cv::Mat imgThreshLow;
	cv::Mat imgThreshHigh;
	cv::Mat imgThresh;

	std::vector<cv::Vec3f> v3fCircles;				// 3 element vector of floats, this will be the pass by reference output of HoughCircles()

	char charCheckForEscKey = 0;

	while (charCheckForEscKey != 27 && capWebcam.isOpened()) {		// until the Esc key is pressed or webcam connection is lost
		bool blnFrameReadSuccessfully = capWebcam.read(imgOriginal);		// get next frame

		if (!blnFrameReadSuccessfully || imgOriginal.empty()) {		// if frame not read successfully
			std::cout << "error: frame not read from webcam\n";		// print error message to std out
			break;													// and jump out of while loop
		}

		cv::cvtColor(imgOriginal, imgHSV, CV_BGR2HSV);

		cv::inRange(imgHSV, cv::Scalar(0, 155, 155), cv::Scalar(18, 255, 255), imgThreshLow);
		cv::inRange(imgHSV, cv::Scalar(165, 155, 155), cv::Scalar(179, 255, 255), imgThreshHigh);

		cv::add(imgThreshLow, imgThreshHigh, imgThresh);

		cv::GaussianBlur(imgThresh, imgThresh, cv::Size(3, 3), 0);

		cv::Mat structuringElement = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));

		cv::dilate(imgThresh, imgThresh, structuringElement);
		cv::erode(imgThresh, imgThresh, structuringElement);

		// fill circles vector with all circles in processed image
		cv::HoughCircles(imgThresh,			// input image
			v3fCircles,							// function output (must be a standard template library vector
			CV_HOUGH_GRADIENT,					// two-pass algorithm for detecting circles, this is the only choice available
			2,									// size of image / this value = "accumulator resolution", i.e. accum res = size of image / 2
			imgThresh.rows / 4,				// min distance in pixels between the centers of the detected circles
			100,								// high threshold of Canny edge detector (called by cvHoughCircles)						
			50,									// low threshold of Canny edge detector (set at 1/2 previous value)
			10,									// min circle radius (any circles with smaller radius will not be returned)
			400);								// max circle radius (any circles with larger radius will not be returned)

		for (int i = 0; i < v3fCircles.size(); i++) {		// for each circle . . .
			// show ball position x, y, and radius to command line
			std::cout << "ball position x = " << v3fCircles[i][0]			// x position of center point of circle
				<< ", y = " << v3fCircles[i][1]								// y position of center point of circle
				<< ", radius = " << v3fCircles[i][2] << "\n";				// radius of circle

			// draw small green circle at center of detected object
			cv::circle(imgOriginal,												// draw on original image
				cv::Point((int)v3fCircles[i][0], (int)v3fCircles[i][1]),		// center point of circle
				3,																// radius of circle in pixels
				cv::Scalar(0, 255, 0),											// draw pure green (remember, its BGR, not RGB)
				CV_FILLED);														// thickness, fill in the circle

			// draw red circle around the detected object
			cv::circle(imgOriginal,												// draw on original image
				cv::Point((int)v3fCircles[i][0], (int)v3fCircles[i][1]),		// center point of circle
				(int)v3fCircles[i][2],											// radius of circle in pixels
				cv::Scalar(0, 0, 255),											// draw pure red (remember, its BGR, not RGB)
				3);																// thickness of circle in pixels
		}	// end for

		// declare windows
		cv::namedWindow("imgOriginal", CV_WINDOW_AUTOSIZE);	// note: you can use CV_WINDOW_NORMAL which allows resizing the window
		cv::namedWindow("imgThresh", CV_WINDOW_AUTOSIZE);	// or CV_WINDOW_AUTOSIZE for a fixed size window matching the resolution of the image
		// CV_WINDOW_AUTOSIZE is the default

		cv::imshow("imgOriginal", imgOriginal);			// show windows
		cv::imshow("imgThresh", imgThresh);

		charCheckForEscKey = cv::waitKey(1);			// delay (in ms) and get key press, if any
	}	// end while

	return(0);
}

然后双击VS2013(或2015),创建一个新项目

然后操作如下,名字随便命名个英文字母的,位置默认位置,然后点OK

然后点Next,然后选择空项目。具体操作如下图所示:

在左侧空白处,右键,添加>新建一个单元(Item)

然后。。。

然后你把上面的那页代码复制粘贴到.cpp文件中

这时候先别急着编译,你要重新把属性中的包含目录,库目录,依赖项改一次。(就这次,下次就不用了)

具体操作步骤请见第一部分。下图所示位置打开属性。

在包含目录(Include directory)中添加:D:\OpenCV\V3.0\opencv\build\include

在库目录(Library directory)中添加:D:\OpenCV\V3.0\mybuild\lib\Debug

在依赖项中添加:

opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_hal300d.lib
opencv_highgui300d.lib

注意,“ 300”对应于OpenCV 3.0.0,如果使用的是其他版本的OpenCV,则它们将有所不同,并且存在的库可能随OpenCV版本的不同而不同。

总之就是把你自建库的debug文件夹中的那一堆.dll文件名给复制到依赖项(Project -> Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies)中去:

在Visual Studio工具栏中,确认分别将“解决方案配置(Solution Configurations)”和“解决方案平台(Solution Platforms)”设置为“调试(Debug)”和“ Win32”。

运行程序,而不进行调试(选择Debug,然后选择空心的绿色箭头,或按Ctrl + F5),或者进行调试(绿色的实心箭头或按F5)

一般的笔记本电脑都自带摄像头(如果没有,你要外接一个摄像头),然后拿着一个红色的球状物体测试,会发现很好玩的事情。

 

 

 

 

 

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页