zoukankan      html  css  js  c++  java
  • 树莓派学习笔记—— 源码方式安装opencv

    0.前言

        本文介绍怎样在树莓派中通过编译源码的方式安装opencv,并通过一个简单的样例说明怎样使用opencv。

        很多其它内容请參考——【树莓派学习笔记——索引博文

    1.下载若干依赖项
        在開始安装之前。最好更新树莓派软件源。

    假设更新时间太长,请參考博文改动软件源网络地址——树莓派学习笔记——改动树莓派软件源

    sudo apt-get update

        请依次安装下面依赖项,这些必须安装的依赖项来自于opencv官网的说明,在多数debian系统中都能够採用这样的方式进行安装。事实上在树莓派中build-essential已经默认安装,可是cmake等其它内容仍须要手动安装。
    sudo apt-get install build-essential
    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

    2.获得源码
        在树莓派用户文件夹中建立opencv文件夹
    mkdir opencv

        通过sourceforge站点获取opencv源码,本文选择2.4.9版本号。下载过程可能比較缓慢,请耐心等待。
    wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download opencv-2.4.9.zip

        解压源码。获得一个名为opencv-2.4.9的文件夹
    unzip opencv-2.4.9.zip

    3.编译源码
        进入opencv源码文件夹,在该文件夹中新建一个名为release的文件夹。
    cd ~/opencv/opencv-2.4.9
    mkdir release
    cd release
        使用cmake工具在该文件夹中生成makefile文件,指定opencv的安装文件夹为/usr/local,opencv的源码位于上一层文件夹。
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
        编译源码并安装(编译源码的时间很的长,make之后我便睡去,第二天早上才运行install)
    make
    sudo make install
        更新搜索动态链接库
    sudo ldconfig

    4.演示样例
    【C++】——通过代码加载一张图片。通过opencv把彩色图片转换为黑白图片。并把原图和转换后的图片输出到屏幕中。
    #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, image_gray;
        image = imread(argv[1], CV_LOAD_IMAGE_COLOR );
        if (argc != 2 || !image.data) {
            cout << "No image data
    ";
            return -1;
        }
       
        cvtColor(image, image_gray, CV_RGB2GRAY);
        namedWindow("image", CV_WINDOW_AUTOSIZE);
        namedWindow("image gray", CV_WINDOW_AUTOSIZE);
       
        imshow("image", image);
        imshow("image gray", image_gray);
       
        waitKey(0);
        return 0;
    }
    【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)
    # 编译规则 $@代表目标文件 $< 代表第一个依赖文件
    %.o:%.cpp
        g++ -I $(INCLUDE) -o $@ -c $<
    【简要说明】
        通过pkg-config --cflags opencv 获得opencv相关头文件路径,通过pkg-config --libs opencv获得opencv扩展库
        很多其它makefile知识请查看—— Linux学习笔记——例说makefile 索引博文
    【编译并运行】
    make
    ./test raspberry.jpg
        演示样例中加载一张名为raspberry.jpg图片。在该演示样例中,图片和可运行文件test应在同一个文件夹中。

    运行结果例如以下图所看到的,左側为原始图片,右側为转换后的图片。选择的图片色彩不够丰富。彩色图片和黑白图片的对照不够强烈,但也可证明opencv在树莓派中运行正常。


    图1 运行结果
    5.总结
    树莓派安装opencv并不困难。陷阱不多可是耗时较长,须要保持足够的耐心。


    參考资料

  • 相关阅读:
    JavaOne Online Hands-on Labs
    Using DTrace to Profile and Debug A C++ Program
    怎样挑选电线?家装用线越大越好吗?
    ORACLE DTRACE DOC
    内核书
    SQL Server vNext CTP 1.2
    用VS Code打造最佳Markdown编辑器
    opendtrace 开源汇总
    DTrace C++ Mysteries Solved 转
    MYSQL-RJWEB 博客学习
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8453788.html
Copyright © 2011-2022 走看看