0.前言php
本文介绍怎样在树莓派中经过编译源码的方式安装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扩展库
【编译并运行】
make
./test raspberry.jpg
演示样例中加载一张名为raspberry.jpg图片。在该演示样例中,图片和可运行文件test应在同一个文件夹中。
运行结果例如如下图所看到的,左側为原始图片,右側为转换后的图片。选择的图片色彩不够丰富。彩色图片和黑白图片的对照不够强烈,但也可证实opencv在树莓派中运行正常。python
图1 运行结果
5.总结
树莓派安装opencv并不困难。陷阱很少但是耗时较长,需要保持足够的耐心。
參考资料