Raspberry上手指南(2)

来源:互联网 发布:云计算开发语言 编辑:程序博客网 时间:2024/05/21 09:02

(很多资料来自网络,感谢各位大大的无私分享!!!不能一一谢过,请见谅)


3 OpenCV环境安装
OpenCV的安装通常会先对源代码进行编译,生成针对其将要运行平台的库文件。由于OpenCV的源码量较为庞大,进行本地编译会十分耗时。特别是对于Raspi这些性能远不及PC的嵌入式设备,所需编译时间可能十分漫长。
这里采用“apt-get”命令直接安装Raspbian镜像源中已经编译好的针对Raspi的OpenCV。
3.1 OpenCV安装
在控制台输入命令“sudo apt-get install build-essential”安装代码编译需要的软件。
在控制台输入命令“sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev”安装OpenCV可能会使用到的依赖库。
在控制台输入命令“sudo apt-get install libcv-dev”安装OpenCV。

安装完成后,在“/usr/lib/arm-linux-gnueabihf”目录下可以看到安装的OpenCV库文件,从名称可以看出所安装的OpenCV是2.4.9版本的。
 
而在“/usr/include/opencv2”下可以看到对应的头文件
 


3.2 OpenCV环境调整
通过观察库文件和头文件,会发现头文件缺少“contrib”模块的部分,需要自行添加。通过FileZilla将OpenCV2.4.9源码中“contrib”部分的头文件发送到Raspi的“/home/pi”中,通过“mv”命令移动到“/usr/include/opencv2”内。
另外,通过对比“feature2d”模块的文件组成,还会发现库文件中的“contrib”模块缺少从“xxx.so”到“xxx.so.2.4”的链接文件。通过“ln -s”命令手动为其添加。
 


 
4 基于OpenCV的应用
4.1 示例源码
该代码实现从摄像头采集图像并显示的功能。
将摄像头与Raspi的一个USB连接,使用“ls /dev”命令,可以在在所列出的内容中找到“video x”的字样,“x”根据当前Raspi所连接摄像头数量,对应依次连接上的摄像头。
此外,该示例使用了“highgui”模块来从摄像头中采集图像。若不采用此模块,在Linux系统下,通常采用V4L2来对摄像头进行类似的控制。
 


4.2 示例Makefile
源码的编译通常使用Makefile来协助完成。Makefile中描述的是,通过“什么”编译器,将“哪些”源码经过“怎样的”规则编译成可执行文件。
注意,“CC”指定编译器;“TARGET”指定生成的可执行文件的名称;“SRCS”指定所使用的源文件;“DLIBS”指定了编译时会用到的额外的库文件。
 


4.3 编译运行
将“main.cpp”和“Makefile”放在同一目录下,使用命令“make”,便可开始对源码进行编译。如果源码没有错误,所需的库文件都存在,会根据“Makefile”生成名为“main”的可执行文件。使用命令“make clean”可以对编译进行清理,删除编译产生的所有文件,包括可执行文件。
将命令行当前目录切换到该可执行文件所在目录,输入“./main”即可运行。由于上述可执行文件需要显示设备,因此,直接在PuTTY中运行是无法实现的。要运行该程序可以:通过VNC-Viewer连接Raspi,在VNC-Viewer中运行编译生成的“main”;或者通过键鼠、显示器的方式来连接,并运行该可执行文件。