从今天开始,我将开始进行OpenCV的学习。由于自己选的方向是计算机视觉方向,OpenCV当然就是首选的也是主流的研发工具。今天是第一篇文章,所以我就多啰嗦一些基本的概念和科普给第一次听说计算机视觉的同学们。
计算机视觉(Computer Vision),是一门研究如何用机器通过视觉认识世界的科学,也就是“看世界”。通过一定的算法来对目标进行一定的信息提取,比如识别、跟踪、分析轨迹等等。或者对摄像头等机器捕捉的现实图像进行一定的图像处理,从其中提取信息或者优化结果,让数据成为更适合机器或者人使用的图像。至于现在最流行的人工智能,我的理解计算机视觉更像是机器的眼睛以及简单的反射结构。它研究的是对外界真实图像的信息采集和处理,完成最初级的智能活动。在现实的应用比如无人驾驶的汽车、导弹的视觉跟踪、还有前一阵子特别火的虚拟现实(这个搞的少)都是属于计算机视觉的范畴。我过去也分不清计算机图形和计算机视觉的区别。计算机图形是你用计算机构造的虚拟的图像。计算机视觉是研究现实中的图像。
OpenCV(Open Source Computer Vision Library),就是一个开源的有关计算机视觉的项目。前辈们将自己写的可以直接用的库发布在这个里面,后来者在使用的时候可以省去繁琐的底层操作,就是一个前人栽树后人乘凉的工程。目前支持各种主流的操作系统,Win、Mac、LINUX等。本人的电脑是Mac OS。所以以后的演示都将在Mac上演示。大部分是Xcode后续可能还包括Qt这都是后话了。废话不多说,开始先安装吧。由于没怎么用过Win所以就说说Mac怎么装吧。
首先你需要安装一个homebrew。网址在这里 https://brew.sh/index_zh-cn.html 大体意思就是你要把这个
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
粘贴到终端里。在Launchpad的实用工具里。相当于WIN里面的CMD控制台。然后他就可以自己自动下载了。这是一个十分有效的包管理软件。以后在你写代码的时候你需要什么包或者库的时候可以直接在终端里使用homebrew install.这样的命令具体,这个软件会自动帮你下载并且安装这个包文件,并且将它放入到你的系统目录中,是一个十分方便的软件。当安装完成以后它会创建 /usr/local/Cellar 这个目录用来存放你以后安装好的程序。你可以在终端中使用home brew 来使用它。
使用的几条基本命令:
brew install 软件名字 这是安装软件
brew search 软件名字 这是搜索软件
brew uninstall 软件名字 这是卸载软件
brew update 这是更新所有包
brew list 列出所有安装的软件
安装好了以后 使用brew install opencv
当然了需要等待一阵子尤其是第一次使用homebrew的时候。等待了大约10分钟 如果发现没有安装成功那么多试几次就好了。
当你的 /usr/local/Cellar文件夹多出一个opencv文件夹的时候也就代表你安装成功了。现在默认安装的都是OpenCV3。过去有的同学使用OpenCV2。OpenCV3是在OpenCV2的基础上做的修改。大部分OpenCV2的代码都可以在OpenCV3上运行。具体的推荐大家去购买《OpenCV3编程入门》,我近期也打算去买一本了。
打开Opencv文件夹,里面主要的文件夹有bin lib include 其中bin是opencv的基础应用 lib是指动态库文件 include里面是写代码需要用的头文件。一般来说想使用外部库,首先要让编译器知道你的外部库的动态库文件在哪 第二要让编译器知道你使用的API所在的头文件在哪。这里有一些编程基础的同学应该知道,配置好动态库和头文件目录就可以使用外部库了。
首先 打开你的Xcode 创建一个项目 然后在配置文件中
build phases–>LinkBinary with Library–>点击左下角“+”–>选择左下角的”other”–>command+shift+g,找到/usr/local/Cellar/opencv/3.4.1_5/lib
我这里的版本是3.4.1_5反正就是找到你们的lib那个文件夹 然后command+a全选 然后按住command用左键把所有不是.dylib的文件移出去。然后点击open。最后如图
这样就把所有的动态库文件都加入进去了,然后我们处理头文件。
找到配置文件,Bulid Setting->Header Search Paths 将你的include目录加进去
使用下列代码进行测试
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
int main(int argc, const char * argv[]) {
// insert code here...
IplImage *p = cvLoadImage("/Users/apple1/Desktop/兔子.PNG");//图片绝对路径
cvNamedWindow("picture",1);
cvShowImage("picture", p);
cvWaitKey(0);
return 0;
}
然后如果这样
嘿嘿打完收工。今天就先到这。吐槽一下优快云的编辑器真的是差的要命。想要加入图片还要手动上传图片,加点图片累死了嘿嘿。希望能对各位有所帮助。下一篇开始我们正式学习OpenCV。