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\n";
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并不困难。陷阱不多可是耗时较长,须要保持足够的耐心。

參考资料

树莓派学习笔记—— 源码方式安装opencv的更多相关文章

  1. 树莓派学习:源码方式安装opencv

    1:下载若干依赖项: 更新软件源:sudo apt-get update/upgrade; 依次安装一下依赖项:   sudo apt-get install build-essential   su ...

  2. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  3. Linux学习之源码包安装与脚本安装(十八)

    Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...

  4. linux源码编译安装OpenCV

    为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...

  5. centos7下源码方式安装gitlab8.9+发送邮件+ldap

    CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...

  6. 源码方式安装 lrzsz 库

    我们都知道安装了lrzsz工具的linux系统环境: 在shell里可以非常方便的上传和下载linux里面的文件: 通常的安装方式: yum install lrzsz sudo apt-get in ...

  7. 源码方式安装 lrzsz库

    源码方式安装 lrzsz库:https://www.cnblogs.com/cocoajin/p/11731787.html 我们都知道安装了lrzsz工具的linux系统环境,在shell里可以非常 ...

  8. Linux上生产环境源码方式安装配置postgresql12

    1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...

  9. 2-14 MySQL初步认识,及CentOS6.8环境,源码方式安装MySQL

    什么是数据库: 存放数据的仓库RDBMS-->(Relational Database Management System) 关系型数据库管理系统DBMS--->(Database Man ...

随机推荐

  1. jquery源码ajax分析

    http://www.cnblogs.com/aaronjs/p/3683925.html

  2. php之将用户信息写入数据库

    session高级应用将用户信息写入到数据库中 首先建立数据库表 在实验数据库sqldb中建立session表,用于存储数据 在根文件夹下建立须要用到的文件(重点是session,class.php这 ...

  3. 2.linux系统命令详解

    1 shell shell:命令解释器,根据输入的命令执行相应命令. 1.1 shell家族 察看当前系统下有哪些shell: cat /etc/shells 察看当前系统正在使用的shell ech ...

  4. [转]Linux常用命令学习

    转自 https://www.cnblogs.com/gaojun/p/3359355.html 1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文 ...

  5. maven、spring jdbc 与mysql

    做一个简单的有数据库的maven项目,目前还是没有前端,而且没有使用mybatis.之后会向项目中添加. 图片 对于上图的说明,第一个大的表格是未运行测试程序数据表的内容,第二个大的表格是运行测试程序 ...

  6. sql server 随机生成布尔值

    ) AS BIT) 或者 )

  7. solarwinds之配置系统管理(System manager)

    配置windows的 1.  打开System Manager   2.  点击new新加一个接口   3.  选择要监控的资源   4.  确认好自己要监控的资源后如下   5.  这里以监控内存使 ...

  8. hdu 1394 Minimum Inversion Number 【线段树求逆序数】

    之前写过树状数组的,再用线段树写一下--- #include<cstdio> #include<cstring> #include<iostream> #inclu ...

  9. 关于表格元素的使用,table、<width>、<heigh>、<border>、<tr>、<th>、<td>、<align>、<colspan>、<rowspan>

    <html>    <head>        <meta charset="UTF-8">        <title>个人简历& ...

  10. Java使用反射通过对象属性获取属性的值

    代码: // 通过属性获取传入对象的指定属性的值 public String getValueByPropName(Student student, String propName) { String ...