树莓派3B+(0D):opencv终于安装好了!

源码方式安装opencv 2.4.9

环境:树莓派3B+
系统:2018-04-18-raspbian-stretch
opencv版本:2.4.9

一、下载若干依赖项

请依次安装以下依赖项,这些必须安装的依赖项来自于opencv官网的说明,在多数debian系统中都可以采用这种方式进行安装。

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
sudo apt-get install libopencv-dev

二、下载源文件

用wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download 这种方式下载非常慢,在win中科学上网之后再下载就很快!为了方便以后使用,于是将下载好的文件上传到了百度云,点击百度网盘下载。在树莓派用户目录下建立opencv文件夹,将下载好的文件存放到这个文件夹下(win上传文件到树莓派可以使用WinSCP客户端)。

三、编译源代码

进入opencv源代码目录,在该目录中新建一个名为release的文件夹。

cd ~/opencv/opencv-2.4.9
mkdir release
cd release

使用cmake工具在该文件夹中生成makefile文件,指定opencv的安装目录为/usr/local,opencv的源代码位于上一层目录。cmake修改后的命令如下,不修改的话,之后make会遇到好几个问题。

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local .. -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_FFMPEG=OFF

找到opencv-2.4.9/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,删掉-Werror=address!不删掉也会遇到问题。下面编译源代码并安装,命令如下:

make
sudo make install  
sudo ldconfig    	# 更新搜索动态链接库

四、查看版本信息

指令如下:

pkg-config --modversion opencv

这里写图片描述

五、测试

目标: 通过代码载入一张图片,用opencv检测图片边缘,并把原图和边缘检测的图片输出到屏幕中。
说明: makefile中通过pkg-config --cflags opencv 获得opencv相关头文件路径,通过pkg-config --libs opencv获得opencv扩展库。
实际操作: 我的test.cpp文件和makefile文件创建在~/Desktop目录,进入该目录下执行以下命令就OK了。

make
./test image.jpg

源代码:
test.cpp

#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_src, image_gray, image_edge;
    image_src = imread(argv[1], CV_LOAD_IMAGE_COLOR );
    if (argc != 2 || !image_src.data) {
        cout << "No image data\n";
        return -1;
    }

    cvtColor(image_src, image_gray, CV_RGB2GRAY); //将原图转为灰度图
    blur(image_gray, image_edge, Size(3, 3));     //使用3*3内核来降噪
    Canny(image_edge, image_edge, 10, 30, 3);     //运行Canny算子

    imshow("image", image_src);
    imshow("edge", image_edge);

    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 $<

测试结果:
这里写图片描述

六、make遇到过的问题

诸如下面的错误,上面已经提供了解决办法。
这里写图片描述
这里写图片描述


参考网址: https://blog.csdn.net/xukai871105/article/details/40988101

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值