树莓派学习(5)-opencv源码方式安装
源码方式安装opencv2.4.9
环境:树莓派3B
系统:2017-11-29-raspbian-stretch
1.下载若干依赖项
依次安装以下依赖项。网上很多教程都是放到一起执行的,但是一起执行往往会出现错误,也不好查错。
(1)软件源更新,在我之前的文章里有讲,这里提供链接,在此不赘述了
(https://blog.****.net/m0_37624499/article/details/89035043)
(2)输入下面的命令
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
2.下载源文件
用wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download 这种方式下载非常慢,而且经常会出现因为网速的问题,而下载不成功的情况!
因此方便下载,提供了一个opencv2.4.9压缩包的下载链接,百度云链接(https://pan.baidu.com/s/1-PrvH7t1RM--yr2o_iqwfA)。
下载好后,将文件传输到树莓派下,这里推荐大家一个传输文件的软件,非常的好用,我网盘上的64位的filezilla的安装包
(https://pan.baidu.com/s/1HPWwIGdglizSMSEcDe-vnA)
提取码:ytmp
具体的用法非常的简单,推荐大家一个链接,一看就会
(https://blog.****.net/u012812482/article/details/50839630)
可通过filezilla传输opencv的压缩包,也可以在win下解压好,在通过filezilla传输,小编更推荐后者,可以更好地确保解压成功。
3.编译源代码
(1)方便使用,在树莓派用户目录下,建立名为opencv的文件夹,将下载好的文件放到这个文件夹中
进入opencv源代码目录,在该目录中新建一个名为release的文件夹。
cd ~/opencv/opencv-2.4.9
mkdir release
cd release
(2)使用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
(3)找到~/opencv/opencv-2.4.9/release/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make
文件,用vi打开,删掉-Werror=address
!不删掉也会遇到问题。
注:上述的~/opencv/opencv-2.4.9/release/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make
文件是在进行了第(2)步的指令,才会生成的
(4)编译源代码,命令如下:
make
注:make指令一定是在release文件下进行的,如果进入其他文件,输入make会出错
如下图显示,说明编译成功
(5)安装源代码,命令如下
sudo make install
sudo ldconfig # 更新搜索动态链接库
4.查看版本信息
pkg-config --modversion opencv
5.测试
目标: 通过代码载入一张图片,用opencv检测图片边缘,并把原图和边缘检测的图片输出到屏幕中。
(1)在win下建立记事本,然后重命名改成test.cpp
(2)然后把下面的源码添加进去,保存
源代码: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;
}
(3)在win下建立记事本,重命名为makefile
(4)把下面的源代码,复制进去保存
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)
# 编译规则 [email protected]代表目标文件 $< 代表第一个依赖文件
%.o:%.cpp
g++ -I $(INCLUDE) -o [email protected] -c $<
(5)找一张图片,命名为image.jpg
(6)然后通过filezilla,把上述三个文件,传输到树莓派的桌面上,位置为/home/pi/Desktop
(7)进入到树莓派Desktop下,运行下面的指令
注:一定要在树莓派界面的终端下,输入./test 命令,否则会出错
make
./test image.jpg
(8)测试结果
遇到的问题:如果在make的时候出现,下列错误
用vi 进入makefile里面,将下面4行,用退格键退到行开头,然后点击Tab键即可:
opencv就安装完成了,安装过程并不复杂,耐心,按步骤来就行,有任何问题欢迎大家留言交流。
参考资料:(https://blog.****.net/Meteor_s/article/details/81146712)