Windows下使用msys2打造OpenCV开发环境

前言

嘛,这个东西在上次写msys2就想加的,无奈被CMake坑出,这几天因为折腾ffmpeg玩又要用所以研究了下,搞明白了还挺好用的。
IDE依旧用的是Clion,配置啥看msys2配置记录,这里不再说了。

安装OpenCV

在msys2下安装还是很简单的

# 如果没有安装toolchain的话先装下
pacman -S mingw-w64-x86_64-toolchain
# 安装OpenCV
pacman -S mingw-w64-x86_64-opencv
Windows下使用msys2打造OpenCV开发环境_第1张图片
选择全部
Windows下使用msys2打造OpenCV开发环境_第2张图片
安装toolchain
Windows下使用msys2打造OpenCV开发环境_第3张图片
安装OpenCV

完事,就是这么简单粗暴

使用

  • Clion新建个项目
Windows下使用msys2打造OpenCV开发环境_第4张图片
新建项目
Windows下使用msys2打造OpenCV开发环境_第5张图片
目录结构见左
  • 编写main.cpp
// main.cpp
/**
  读取一个图片,并显示
*/
#include 
#include 

using namespace cv;

int main() {
    Mat mat = imread("C:\\Users\\Chigusa\\Desktop\\1.jpg");
    imshow("test",mat);
    waitKey();
    return 0;
}
  • 编写CMakeLists.txt
# cmake版本最低要求
cmake_minimum_required(VERSION 3.8)
# 工程名,会产生"${PROJECT_NAME}"变量
project(OpenCV_Test)
# set用来定义变量,变量使用时用"${变量名}"的形式
set(CMAKE_CXX_STANDARD 11)

# 用find_package寻找OpenCV,找到后会有"${OpenCV_INCLUDE_DIRS}","${OpenCV_LIBRARIES}"两个变量可供使用,第一个是头文件位置,第二个是库文件
find_package(OpenCV REQUIRED)

# message用来打印信息,这里打印下找到的OpenCV的头文件和库文件的信息,可以不做
message(STATUS "OpenCV Include: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV Libs: ${OpenCV_LIBRARIES}")

# 找到在当前目录下的所有代码文件,存储到"SOURCE_FILES"变量中
aux_source_directory(. SOURCE_FILES)
# 打印下刚才的"SOURCE_FILES",同样可不做
message(STATUS "src: ${SOURCE_FILES}")

# 定义需要include的头文件的位置
include_directories(${OpenCV_INCLUDE_DIRS})

# 添加个可执行的输出,第一个参数是输出名,必须唯一,第二个源文件
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

# 用来链接库,注意这个函数要在"add_executable"之后使用
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
  • 点击上面的Reload changes,然后就能看到信息了


    Windows下使用msys2打造OpenCV开发环境_第6张图片
    Reload changes
Windows下使用msys2打造OpenCV开发环境_第7张图片
CMake输出
  • 编译运行
成功运行

尾巴

如果想用其他的CMake构建出来的库,比如Boost也可以直接find_package(Boost REQUIRED),然后加个include_directories(${Boost_INCLUDE_DIRS})target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})就行,如果不是的话参考这个文章吧。

最近换了Mac,msys2近期估计不会再折腾了(狗屎虚拟机跑Win10快卡死我了orz)

你可能感兴趣的:(Windows下使用msys2打造OpenCV开发环境)