0%

Linux&&树莓派安装opencv2.4.13

不管是自己的笔记本还是台式桌面电脑,使用的 Linux 系统和树莓派所安装的系统的系统都是 Linux 的,但是树莓派的处理器架构不同,所以不能一个地方 make,两个地方 install,需要分开编译安装。
之前在树莓派上安装了 Ubuntu-Mate 系统,树莓派安装Ubuntu Mate系统,但是之前太狗血并不知道ssh-keygen的用法,老以为 ssh 坏掉了。。结果还是装了官方的系统。不过两个系统应该没有太大差别。
注:在树莓派上的安装不是交叉编译,交叉编译没有成功,没找什么国外的网站,这里使用源码包编译安装的方式,两者安装流程相同


opencv 介绍

OpenCV 的全称是:Open Source Computer Vision Library。OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++类构成,同时提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。


安装 opencv 依赖包

安装 OpenCV 的依赖包:

1
2
3
4
5
6
[编译器]:
$ sudo apt-get install build-essential
[必须安装]:
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[可选择安装]:
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

下载 opencv 的源码包

可以去官网下载,也可以去github来进行源码包的下载。可能你会下载得非常慢。一个十分有效的方法是使用迅雷下载,右键复制下载包的链接地址,然后打开迅雷会自动搜索项目然后进行下载
还给一个下载的地址,如果上面的说法太慢可以试试这个下载链接


进行编译安装

1
2
3
4
5
6
7
8
9
10
11
12
#进入到opencv的目录
$ cd opencv
$ mkdir build && cd build
#注意local和..之间有个空格
$ sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#-j4就是用四核进行编译的意思
$ sudo make -j4
$ sudo make install
#更新搜索动态链接库
$ sudo ldconfig
#如果你要在Python下运行opencv的库
$ sudo apt-get install python-opencv

然后进度走完就已经大功告成,只想吐槽一波深夜装了几个小时,树莓派的渣渣处理能力真是惨不忍睹。笔记本编译安装耗时大概一个小时左右吧。(deepin 挺慢,在 Ubuntu 上使用-j8 编译飞快)


测试代码

安装好之后还需要确认一下。可以使用下面的方法进行测试。
创建一个名字叫做test.cpp的文件,然后在其中保存下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cv.h>
#include <highgui.h>

int main(int argc, char *argv[])
{
IplImage *img = 0;
img = cvLoadImage("/home/xuan/1.jpg", -1);
cvNamedWindow("1", 1);
cvShowImage("1", img);
cvWaitKey(0);

return 0;
}

在家目录下放一张 1.jpg 的图片,使用命令进行源文件的编译运行

1
2
$ g++ main.cpp -o main `pkg-config --cflags --libs opencv`
$ ./main

看到图片正常的加载和显示,那么恭喜你安装成功!
opencv运行


qt-for-linux 编译运行 opencv

用 IDE 在调试的时候比较方便。不会用 gdb 的菜鸡使用的是 QT,Linux 上非常强大好用的工具。
在创建工程和 C++一样的,使用控制台的类型进行创建。然后需要修改.pro 文件来调用 opencv 的库。
编辑你创建的例如 untitled.pro 文件,在文件的末尾加上以下内容,加完之后我的是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp

# -------下面是我加入的内容,加入链接位置----------
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so

然后直接 ctrl+R 就可以直接编译运行了。


QT 中的 debug 运行

如果想在 qt 运行时 debug 查看源代码,在编译安装的时候使用。同时要注意源码包位置不能放在中文路径下
sudo cmake -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/usr/local ..
这个方式进行编译,然后在 QT 中设置断点然后就可以进去看到源代码,方便大家学习 opencv 源码。


参考资料

树莓派上安装并运行 opencv

听说好看的人都关注了我的公众号《泫言》