0.前言

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

相比于源码方式安装opencv,通过apt方式安装过程步骤简单些,消耗的时间也少一些。通过apt方式安装没有自己主动生成opencv.pc文件,所以在编写makefile文件时不能直接使用pkg-config工具,而须要逐个指定opencv_core、opencv_imgproc等动态链接库。

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

1.安装opencv

    開始之前进行必要的更新工作。

sudo apt-get update

    安装opencv。

sudo apt-get install libcv-dev

    安装过程比較缓慢,请耐心等待。
    安装完毕之后,opencv相关的头文件被安装到/usr/lib文件夹中,该文件夹是linux默认头文件查找路径。

opencv的相关动态链接库被安装到/usr/lib文件夹中。

这些动态链接库包含:

【opencv_calib3d】——相机校准和三维重建
【opencv_core】——核心模块。画图和其它辅助功能
【opencv_features2d】——二维特征检測
【opencv_flann】——高速最邻近搜索
【opencv_highgui】——GUI用户界面
【opencv_imgproc】——图像处理
【opencv_legacy】——废弃部分
【opencv_ml】——机器学习模块
【opencv_objdetect】——目标检測模块
【opencv_ocl】——运用OpenCL加速的计算机视觉组件模块
【opencv_video】——视频分析组件
    

2.简单演示样例

【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】

CC = g++
# 可运行文件
TARGET = test
# C文件
SRCS = test.cpp
# 目标文件
OBJS = $(SRCS:.cpp=.o)
# 库文件
DLIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui
# 链接为可运行文件
$(TARGET):$(OBJS)
$(CC) -o $@ $^ $(DLIBS)
clean:
rm -rf $(TARGET) $(OBJS)
# 编译规则 $@代表目标文件 $< 代表第一个依赖文件
%.o:%.cpp
$(CC) -o $@ -c $<

【简单说明】

DLIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui
演示样例中使用了opencv中的核心部分、图像处理部分和GUI部分,所以依次添加opencv_core、opencv_imgproc、opencv_highgui动态链接库。该部分和和【树莓派学习笔记——源码方式安装opencv】中的演示样例稍有不同。前文中的makefile使用LIBS = $(shell pkg-config --libs opencv)引入全部的opencv动态链接库。此处手动指定相关库按需链接。

【编译】

make
【运行】
./test raspberry.jpg
可运行文件test和raspberry.jpg应在同一个文件夹中。

运行结果例如以下图所看到的,说明opencv得以正常运行。

图1 运行结果
3.总结

通过源码方式安装opencv更加方便,安装时间也更短。

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

  1. 树莓派通过apt方式安装opencv库

    1.安装opencv     开始之前进行必要的更新工作. sudo apt-get update     安装opencv. sudo apt-get install libcv-dev     安 ...

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

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

  3. ubuntu 14.04 下利用apt-get方式安装opencv

    转载,请注明出处:http://blog.csdn.net/tina_ttl 目录(?)[+] 标签(空格分隔): Linux学习 OpenCV ubuntu 1404 下利用apt-get方式安装O ...

  4. 树莓派学习笔记—— 源码方式安装opencv

    0.前言     本文介绍怎样在树莓派中通过编译源码的方式安装opencv,并通过一个简单的样例说明怎样使用opencv.     很多其它内容请參考--[树莓派学习笔记--索引博文] 1.下载若干依 ...

  5. 树莓派学习笔记——交叉编译练习之SQLite3安装

    0.前言     本博文可能并没有太多使用价值.不过为了练习而练习.在树莓派上使用SQLite有非常多的方法,安装的方法也有非常多.     [1]假设使用Python,那么不必安装SQLite由于P ...

  6. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  7. 树莓派学习笔记——USB wifi配置指南

    0 前言     树莓派既能够使用有线网络又能够无线网络,假设使用有线网络不方便的话能够借助USB wifi无线网卡让树莓派也插上无线"翅膀". 可是和使用有线网络即插即用的方式不 ...

  8. 【转】树莓派学习笔记——I2C Tools 学习笔记

    原文网址:http://blog.csdn.net/xukai871105/article/details/15029843 1.安装     I2C驱动载入和速率修改请查看博文[树莓派学习笔记——I ...

  9. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面 ...

随机推荐

  1. 【Android】 HttpClient 发送REST请求

    直接po代码吧,第一个是一个枚举类型的类,是四种rest http请求,get/post/put/delete: public enum HttpRequestMethod { HttpGet { @ ...

  2. Python __call__内置函数的作用和用法

    开学了进入了实验室,需要协助大师兄做事,主要是OpenStack中的代码解析,但是涉及很多python高级用法,一时间有点麻烦,在做项目的同时慢慢更新博客.这次先写一下__call__的用法,因为经常 ...

  3. 【dfs序】【二分】【主席树】【分块】bzoj3351 [ioi2009]Regions

    http://dzy493941464.sinaapp.com/archives/96 那个SIZE貌似必须设成R*R/Q?不知为啥,自己算的不是这个的说. 本机AC,线上TLE. #include& ...

  4. 【分块】bzoj2724 [Violet 6]蒲公英

    分块,离散化,预处理出: ①前i块中x出现的次数(差分): ②第i块到第j块中的众数是谁,出现了多少次. 询问的时候,对于整块的部分直接获得答案:对于零散的部分,暴力统计每个数出现的次数,加上差分的结 ...

  5. 触摸事件onTouchListener

    1.效果图: (1)MainAcivity.java package com.example.app3; import android.content.DialogInterface; import ...

  6. RxJava 1.x 理解-1

    先看下别人实现的最基本的RxJava的实现方式: 在RxJava里面,有两个必不可少的角色:Subscriber(观察者) 和 Observable(订阅源). Subscriber(观察者) Sub ...

  7. LongPathException问题解析

    一.背景      当windows系统下使用System.IO命名空间下的方法,目录长度超过260个字符时,.net framework会抛出LongPathException.查阅相关资料,发现是 ...

  8. 利用Cain+wireshark进行协议分析

    Cain抓包指南 1.简介: 在开发测试工作中经常有捕抓设备间通信报文的需求,但有时候被抓包的设备并不直接和进行抓包的主机或设备进行通信,因此会达不到想要的效果.解决该问题的常见方法有: (1).为被 ...

  9. 【spring】spring boot中使用@EnableTransactionManagement 以后,spring mvc接收前台ajax的post方法传过来的参数,使用@RequestBody接收不到参数

    在启动类上添加了注解: @EnableTransactionManagement, postMan测试接口,以这种方式传递参数: 测试结果: 接收不到参数 问题解决: 原因:是因为 这个项目中的Con ...

  10. 【k8s】了解一下k8s

    了解一下k8s 地址: https://www.kubernetes.org.cn/doc-11