Linux OpenCV开发环境快速初始化步骤

安装Manjaro

https://manjaro.org/download/
推荐使用xfce版本,使用图形界面安装(最新测试版的Architect 19.0-200223-linux54存在问题,无法正常安装系统)

安装系统后:

更新系统并安装基本开发工具

  1. 从开始菜单打开”Terminal Emulator”(终端模拟器)
  2. 先更新系统 sudo pacman -Syu
  3. 然后安装开发用基本工具包 sudo pacman -S base-devel --needed
  4. 安装gdb调试工具包 sudo pacman -S gdb
  5. 安装cmake编译工具 sudo pacman -S cmake

启用AUR(Archlinux User Repository)

  1. 在开始菜单中寻找名为”add/remove software”(软件包管理器)
  2. 打开
  3. 右上角三个竖点的菜单,打开设置
  4. 选择AUR选项卡,打开“启用AUR支持”
  5. 随后安装yay包管理器,可以选择直接安装预编译的yay-bin而不是yay以便加快安装速度

安装IDE及Git GUI

  1. 从开始菜单打开”Terminal Emulator”(终端模拟器)
  2. 运行 yay -S guitar 安装名为Guitar的git图形界面
  3. 运行 yay -S clion clion-jre clion-cmake clion-gdb clion-lldb

安装OpenCV及boost

  1. 从开始菜单打开”Terminal Emulator”(终端模拟器)
  2. 运行 yay -S opencv boost

官方源中的 opencv 默认包含了所有contrib部分和nonfree部分,且包括python包,安装后可以直接在python中通过 import cv2 来使用所有opencv的python功能

安装IDE用字体

  1. 从开始菜单打开”Terminal Emulator”(终端模拟器)
  2. 运行 yay -S ttf-fira-code adobe-source-code-pro-fonts adobe-source-han-sans-cn-fonts ,来安装主字体 fira-code + 次字体 source-code-pro + 中文字体 source-han-sans

一个名为 TestOpenCV 的测试项目

CMakeLists.txt配置文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cmake_minimum_required(VERSION 3.15)
set(PROJECT_NAME TestOpenCV)
project(${PROJECT_NAME})

set(CMAKE_CXX_STANDARD 20)

# find boost
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost REQUIRED COMPONENTS filesystem)
include_directories(${Boost_INCLUDE_DIRS})

# find opencv
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(${PROJECT_NAME} main.cpp)

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})

对应 main.cpp 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <deque>
#include <type_traits>
#include <opencv2/opencv.hpp>
#include <opencv2/ximgproc.hpp>
#include <boost/filesystem.hpp>

int main() {
std::cout << "Hello, World!" << std::endl;
boost::filesystem::path p{R"(/home/jeremie/OpenCV_TestData/)"};
p /= ("DJI_0143.MP4_snapshot_00.36_[2020.03.24_15.03.35].png");
auto img = cv::imread(p.string());

std::cout << img.empty() << std::endl;
if (img.empty()) {
return -1;
}
std::cout << img.size() << std::endl;

cv::cvtColor(img, img, cv::ColorConversionCodes::COLOR_BGR2GRAY);

cv::namedWindow("", cv::WindowFlags::WINDOW_NORMAL);
cv::imshow("", img);
cv::waitKey();


return 0;
}