树莓派学习(5)-opencv源码方式安装

源码方式安装opencv2.4.9

环境:树莓派3B
系统:2017-11-29-raspbian-stretch

1.下载若干依赖项

依次安装以下依赖项。网上很多教程都是放到一起执行的,但是一起执行往往会出现错误,也不好查错。
(1)软件源更新,在我之前的文章里有讲,这里提供链接,在此不赘述了
(https://blog.****.net/m0_37624499/article/details/89035043)
(2)输入下面的命令

sudo apt-get install cmake
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install python-dev python-numpy
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
sudo apt-get install libopencv-dev

2.下载源文件

用wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download 这种方式下载非常慢,而且经常会出现因为网速的问题,而下载不成功的情况!
因此方便下载,提供了一个opencv2.4.9压缩包的下载链接,百度云链接(https://pan.baidu.com/s/1-PrvH7t1RM--yr2o_iqwfA)。

下载好后,将文件传输到树莓派下,这里推荐大家一个传输文件的软件,非常的好用,我网盘上的64位的filezilla的安装包
(https://pan.baidu.com/s/1HPWwIGdglizSMSEcDe-vnA)
提取码:ytmp

具体的用法非常的简单,推荐大家一个链接,一看就会
(https://blog.****.net/u012812482/article/details/50839630)

可通过filezilla传输opencv的压缩包,也可以在win下解压好,在通过filezilla传输,小编更推荐后者,可以更好地确保解压成功。

3.编译源代码

(1)方便使用,在树莓派用户目录下,建立名为opencv的文件夹,将下载好的文件放到这个文件夹中

进入opencv源代码目录,在该目录中新建一个名为release的文件夹。

cd ~/opencv/opencv-2.4.9
mkdir release
cd release

(2)使用cmake工具在该文件夹中生成makefile文件,指定opencv的安装目录为/usr/local,opencv的源代码位于上一层目录。cmake修改后的命令如下,不修改的话,之后make会遇到好几个问题。

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local .. -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_FFMPEG=OFF

(3)找到~/opencv/opencv-2.4.9/release/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,用vi打开,删掉-Werror=address!不删掉也会遇到问题。

注:上述的~/opencv/opencv-2.4.9/release/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件是在进行了第(2)步的指令,才会生成的
树莓派学习(5)-opencv源码方式安装
(4)编译源代码,命令如下:

make

注:make指令一定是在release文件下进行的,如果进入其他文件,输入make会出错
如下图显示,说明编译成功
树莓派学习(5)-opencv源码方式安装

(5)安装源代码,命令如下

sudo make install  
sudo ldconfig    	# 更新搜索动态链接库

树莓派学习(5)-opencv源码方式安装

4.查看版本信息

pkg-config --modversion opencv

树莓派学习(5)-opencv源码方式安装

5.测试

目标: 通过代码载入一张图片,用opencv检测图片边缘,并把原图和边缘检测的图片输出到屏幕中。

(1)在win下建立记事本,然后重命名改成test.cpp
树莓派学习(5)-opencv源码方式安装

(2)然后把下面的源码添加进去,保存
源代码:test.cpp

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main (int argc, char **argv)
{
    Mat image_src, image_gray, image_edge;
    image_src = imread(argv[1], CV_LOAD_IMAGE_COLOR );
    if (argc != 2 || !image_src.data) {
        cout << "No image data\n";
        return -1;
    }

    cvtColor(image_src, image_gray, CV_RGB2GRAY); //将原图转为灰度图
    blur(image_gray, image_edge, Size(3, 3));     //使用3*3内核来降噪
    Canny(image_edge, image_edge, 10, 30, 3);     //运行Canny算子

    imshow("image", image_src);
    imshow("edge", image_edge);

    waitKey(0);
    return 0;
}

(3)在win下建立记事本,重命名为makefile
树莓派学习(5)-opencv源码方式安装

(4)把下面的源代码,复制进去保存
makefile

INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
SOURCES = test.cpp
# 目标文件
OBJECTS = $(SOURCES:.cpp=.o)
# 可执行文件
TARGET = test
$(TARGET):$(OBJECTS)
    g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS):$(SOURCES)
    g++ -c $(SOURCES)
clean:
    rm $(OBJECTS) $(TARGET)
# 编译规则 [email protected]代表目标文件 $< 代表第一个依赖文件
%.o:%.cpp
    g++ -I $(INCLUDE) -o [email protected] -c $<

(5)找一张图片,命名为image.jpg

树莓派学习(5)-opencv源码方式安装
(6)然后通过filezilla,把上述三个文件,传输到树莓派的桌面上,位置为/home/pi/Desktop
树莓派学习(5)-opencv源码方式安装
(7)进入到树莓派Desktop下,运行下面的指令
注:一定要在树莓派界面的终端下,输入./test 命令,否则会出错

make
./test image.jpg

(8)测试结果
树莓派学习(5)-opencv源码方式安装

遇到的问题:如果在make的时候出现,下列错误
树莓派学习(5)-opencv源码方式安装
用vi 进入makefile里面,将下面4行,用退格键退到行开头,然后点击Tab键即可:
树莓派学习(5)-opencv源码方式安装

opencv就安装完成了,安装过程并不复杂,耐心,按步骤来就行,有任何问题欢迎大家留言交流。

参考资料:(https://blog.****.net/Meteor_s/article/details/81146712)