编译安装
参考官方文档:Installation in Linux,我使用的 WSL 发行版为 Debian 10,具体过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 安装编译工具和依赖 sudo apt update && sudo apt install cmake g++ git libgtk2.0-dev # 下载代码 git clone https://github.com/opencv/opencv.git cd opencv # Create build directory mkdir build && cd build # 编译配置,这里自定义了安装目录 cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local .. # 编译 make -j4 # 安装 make install |
建议先看文档整体内容再进行编译安装,如果你像我没有看详细步骤就编译了(单线程编译时间如下图 ),可以在 make install
时自定义安装路径,参考 CMAKE_INSTALL_PREFIX 和 DESTDIR。不过最后还是多次编译才成功,因为在显示图片时缺了 GUI 库 libgtk2.0-dev
,需要重新 build,参考:stackoverflow。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Install minimal prerequisites (Ubuntu 18.04 as reference) sudo apt update && sudo apt install -y cmake g++ wget unzip # Download and unpack sources wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip unzip opencv.zip # Create build directory mkdir -p build && cd build # Configure cmake ../opencv-master # Build cmake --build . # 自定义安装路径 make DESTDIR=$HOME/.local install |
环境变量设置
自定义安装路径可能需要设置一些环境变量以便找到 OpenCV 库文件,若使用的 Shell 是 zsh,可在 .zshenv
(bash 则是 .bashrc
)加入
1 2 |
export PATH="$HOME/.local/bin:$PATH" export LD_LIBRARY_PATH="$HOME/.local/usr/local/lib:$LD_LIBRARY_PATH" |
重新登陆终端生效。如果后续项目都是使用 CMake 构建,也可在 CMakeLists.txt
指明使用的 OpenCV 具体路径而不用设置环境变量,见下。
VcXsrv Windows X Server 安装
这一步简称装 X ,OpenCV 官方教程中一个示例程序是显示图片,算是“Hello, World”?微软官方 GUI 支持项目 WSLg 最近刚开始预览测试,而 WSL 目前是通过 X11 转发支持 GUI 软件运行的,现在可用的第三方参考:Awesome-WSL#x-servers。这里我选了 VcXsrv
,下载地址:sourceforge,若不修改安装路径,一路默认安装即可。开始菜单找到 XLaunch 图标点开,防火墙设置允许,然后默认配置即可。
设置必要的环境变量,.zshenv
加入
1 2 |
export DISPLAY=:0.0 # in WSL 1 export LIBGL_ALWAYS_INDIRECT=1 |
重新登陆终端生效。
CMake 构建配置
参考官方文档:Using OpenCV with gcc and CMake,一个简单的例程即显示图片。
DisplayImage.cpp
文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv ) { if ( argc != 2 ) { printf("usage: DisplayImage.out <Image_Path>\n"); return -1; } Mat image; image = imread( argv[1], 1 ); if ( !image.data ) { printf("No image data \n"); return -1; } namedWindow("Display Image", WINDOW_AUTOSIZE ); imshow("Display Image", image); waitKey(0); return 0; } |
CMakeLists.txt
文件内容如下:
1 2 3 4 5 6 7 8 |
cmake_minimum_required(VERSION 2.8) project( DisplayImage ) # OpenCV 的 CMake 配置文件目录 set(OpenCV_DIR "$ENV{HOME}/.local/lib/cmake/opencv4") find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) add_executable( DisplayImage DisplayImage.cpp ) target_link_libraries( DisplayImage ${OpenCV_LIBS} ) |
命令行执行:
1 2 3 4 |
mkdir build && cd build cmake .. make ./DisplayImage lena.jpg & |
应该可以看到弹出窗口显示图片了。
发表评论