树莓派2+OpenCV环境搭建

来源:互联网 发布:崔屹教授 知乎 编辑:程序博客网 时间:2024/05/22 12:15

一,环境搭建

1、安装所需的安装工具和包:

# sudo apt-get install build-essential cmake pkg-config

build-essential 和 pkg-config可能都已经安装。以防万一,我们还是将它们键入apt-get命令中。

2、安装必要的图像I/O包,这样才可以读入JPEG,PNG,TIFF等这些格式的图像。

# sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

3、安装GTK开发库,这个库用来构建GUI。同时OpenCV中的highgui库也需要它来在屏幕上显示图像。

# sudo apt-get install libgtk2.0-dev

4、安装必要的视频I/O包,OpenCV需要它们来读入视频文件。

# sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

5、安装OpenCV优化操作时所需库。

# sudo apt-get install libatlas-base-dev gfortran

6、下载和解压OpenCV(如果已经下载好了,通过U盘传到树莓派,注意U盘是挂载在/media目录下)

# wget -O opencv-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download# unzip opencv-2.4.9.zip# cd opencv-2.4.9

7、安装open

# sudo mkdir build# cd build# sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..

8、编译OpenCV

# sudo make# sudo make install

9、更新搜索动态链接库

#sudo ldconfig

二、测试

通过代码载入一张图片,通过opencv把彩色图片转换为黑白图片,并把原图和转换后的图片输出到屏幕中。

test.cpp

#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;int main (int argc, char **argv){    Mat image, image_gray;    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 $<

编译并执行,载入一张名为lena.jpg图片,图片和可执行文件test应在同一个目录中,如下图所示

#sudo make#sudo ./test lena.jpg

这里写图片描述

运行过程中还出现了两个问题

问题一:

这里写图片描述

这是由于我在编写这个文件的时候,9行前面用的是4个空格符,而不是tab,所以造成了操作符丢失的错误。只需把缩进的空格delete掉,然后按tab键用tab代替4个空格,问题就可能解决。

问题二:

这里写图片描述

这里写图片描述

这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令。

#xhost +

通过执行这条命令,就授予了其它用户访问当前屏幕的权限,于是就可以以另外的用户运行需要运行的程序了,最简单的办法就是用root权限运行。

运行结果

这里写图片描述

参考资料:
http://blog.csdn.net/zx3517288/article/details/47335223
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=80601
http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
http://blog.csdn.net/xukai871105/article/details/40988101
http://tieba.baidu.com/p/3958907653

0 0
原创粉丝点击