平台:树莓派3b
系统:raspberrypi 5.4.51
编译链版本:gcc 5.5.0 & g++ 5.5.0
opencv版本:4.1.0
下面是opencv的官网,我下载的是4.1.0版本。
https://opencv.org/releases/
如果不安装在运行应用程序时可能会报错误。
apt-get install libgtk2.0-dev pkg-config
解压并创建一个编译目录:
tar xvf opencv-4.1.0.tar.gz
cd opencv-4.1.0
mkdir build
创建安装目录:
sudo mkdir /usr/local/opencv-4.1.0
使用cmake配置,这个过程可能要几分钟:
sudo cmake -D CMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.1.0 ..
然后编译安装,树莓派太慢了,至少编译了2小时才编译完,服务器上几分钟就编译完了:
sudo make -j4
sudo make install
打开库路径文件:
sudo vim /etc/ld.so.conf.d/opencv.conf
在文件中加上opencv的安装位置:
/usr/local/opencv-4.1.0/lib
然后执行
sudo ldconfig
打开系统环境变量文件:
sudo vim /etc/bash.bashrc
在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-4.1.0/lib/pkgconfig
export PKG_CONFIG_PATH
然后执行,使用环境变量生效:
source /etc/bash.bashrc
5.检查安装是否成功
输入下面的指令,显示版本表示安装成功
pkg-config opencv --modversion
如果显示
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
可以将lib/pkgconfig下的opencv4.pc改名为opencv.pc。如何没有pkgconfig目录,是因为cmake时没加-D OPENCV_GENERATE_PKGCONFIG=YES
6.运行示例
进入samples/cpp/example_cmake,修改makefile,添加-std=c++11支持,添加头文件和库文件路径。
CXX ?= g++
CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv) -std=c++11
LDFLAGS += $(shell pkg-config --libs --static opencv)
CXXFLAGS += -I/usr/local/opencv-4.1.0/liclude \
-L/usr/local/opencv-4.1.0/lib
all: opencv_example
opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS)
%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)
clean: ; rm -f example.o opencv_example
make
./opencv_example
注意这个例子需要有摄像头接入,要有/dev/video0设备文件。
如果出现Gtk-WARNING **: cannot open display,注意你使用的终端工具是否支持X11-forwarding,用MobaXterm试试。
问题1:error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'
解决方法:在cmake时加-D OPENCV_ENABLE_NONFREE