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把彩色图片转换为黑白图片,并把原图和转换后的图片输出到屏幕中。

[cpp] view plaincopy
  1. #include <opencv2/core/core.hpp>
  2. #include <opencv2/imgproc/imgproc.hpp>
  3. #include <opencv2/highgui/highgui.hpp>
  4. #include <iostream>
  5. using namespace cv;
  6. using namespace std;
  7. int main (int argc, char **argv)
  8. {
  9. Mat image, image_gray;
  10. image = imread(argv[1], CV_LOAD_IMAGE_COLOR );
  11. if (argc != 2 || !image.data) {
  12. cout << "No image data\n";
  13. return -1;
  14. }
  15. cvtColor(image, image_gray, CV_RGB2GRAY);
  16. namedWindow("image", CV_WINDOW_AUTOSIZE);
  17. namedWindow("image gray", CV_WINDOW_AUTOSIZE);
  18. imshow("image", image);
  19. imshow("image gray", image_gray);
  20. waitKey(0);
  21. return 0;
  22. }
【makefile】

[plain] view plaincopy
  1. INCLUDE = $(shell pkg-config --cflags opencv)
  2. LIBS = $(shell pkg-config --libs opencv)
  3. SOURCES = test.cpp
  4. # 目标文件
  5. OBJECTS = $(SOURCES:.cpp=.o)
  6. # 可执行文件
  7. TARGET = test
  8. $(TARGET):$(OBJECTS)
  9. g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
  10. $(OBJECTS):$(SOURCES)
  11. g++ -c $(SOURCES)
  12. clean:
  13. rm $(OBJECTS) $(TARGET)
  14. # 编译规则 $@代表目标文件 $< 代表第一个依赖文件
  15. %.o:%.cpp
  16. 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并不困难,陷阱不多但是耗时较长,需要保持足够的耐心。

参考资料

【Installation in Linux】
【Installation of OpenCV Raspberry pi】

树莓派学习笔记—— 源代码方式安装opencv相关推荐

  1. 【树莓派学习笔记】四、OpenCV的安装与卸载

    目录 安装 修改host以连接上Github 测试IP 修改树莓派的hosts 安装各种依赖包 安装OpenCV 只安装核心模块 安装核心模块和opencv_contrib C++ Opencv 测试 ...

  2. 【机器视觉学习笔记】python安装OpenCV并设置自动补全及代码提示

    目录 安装 测试 设置自动补全及代码提示 平台:Windows 10 20H2 Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 6 ...

  3. Opencv学习笔记1:安装opencv和VS2015并进行环境配置

    用了Opencv一段时间了,简单记录一下opencv在vs2015下的配置. 第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: https://opencv.org/releases ...

  4. 树莓派学习笔记——wiringPi简介、安装和管脚说明

    1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3.wiringPi使用C或者C++开发并且可以被其他语言包转,例如python.ru ...

  5. 树莓派学习笔记 ——I2C PCF8574 SysFs方式

    1.前言 树莓派的GPIO端口数量有限,可通过IO扩展芯片增加GPIO的数量,使得树莓派可以适应更多的应用.PCF8574为一款通过I2C总线扩展IO的芯片,单个PCF8574可扩展8个IO,一个I2 ...

  6. 树莓派学习笔记——GPIO功能学习

    0.前言 树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个. [ python GPIO ] [开发语言] ...

  7. 树莓派与matlab联动并安装opencv

    树莓派与matlab联动并安装opencv 背景 树莓派镜像 修改软件源 方法 更改默认python版本为python3 安装ftp服务器 安装opencv 检查确认效果 补充:开机自动上报ip 背景 ...

  8. 树莓派学习笔记——Wifi AP热点模式 使用RT5370

    0.前言 本文详细说明为树莓派增加Wifi AP热点功能的具体步骤.配置完成之后,树莓派将增加一个Wifi热点功能,使用笔记本或手机便可连接树莓派,树莓派具有了AP热点功能,可更一步扩展树莓派相关的W ...

  9. 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)

    [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 文章目录 [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 前言 1. 硬件需求与软件版本汇总 ...

最新文章

  1. vim删除文件所有内容
  2. 拼多多再起波澜!某程序员匿名发布拼多多楼下救护车照片,却被揪出开除!...
  3. 项目中除了需求外还需要知道的问题
  4. matlab画满载率渐变图,数学建模论文-校园公交车调度问题
  5. 2015年4月20 号的日志
  6. 最简单的基于FFmpeg的libswscale的示例(YUV转RGB)
  7. 学术 | 如何写一篇学术论文?(上)
  8. ubuntu 防止软件包自动更新
  9. Hadoop 开源调度系统zeus
  10. linux系统镜像安装方法,linux系统安装的引导镜像制作流程分享
  11. 初识STM32F103
  12. java spring定时器_JAVA中 Spring定时器的两种实现方式
  13. 手动实现一门图灵完备的编程语言——Brainfuck
  14. JavaScript闭包理解
  15. VTK:交互与Widget——观察者/命令模式
  16. 最新EXCEL使用技巧大全
  17. matlab求变上限积分的导数,变上限积分函数的求导
  18. python制作工资表_Python实用案例:一秒自动生成工资条。
  19. 深大uooc学术道德与学术规范教育第四章
  20. 3.Trie树(题:最大异或对)

热门文章

  1. 【JUC并发编程10】阻塞队列
  2. 22道Java面试题,看看你会了多少?
  3. 蓝桥杯-删除数组零元素(java)
  4. 玩转服务器(华为云)—环境安装(jdk安装,tomcat安装)
  5. html拖拽显示获取坐标,html界面元素拖拽实现[超简单]
  6. ipython和anaconda区别_Anaconda和ipython环境适配的实现
  7. html按钮坐标,html-单选按钮位置CSS
  8. post提交调用的却是doget方法_Python基础教程 | Requests库的使用方法和细节
  9. python判断对错题_python 初学者错题本
  10. 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用