当前位置: 首页 > news >正文

Windows11+Opencv+Clion编译源码

Windows11+Opencv+Clion编译源码

参考:https://www.robotsfan.com/posts/69395e08.html

注意事项

  • 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。
  • cmake过程会下载一些文件,如果是局域网的话可能下载不下来,可以事先下载好拷贝到相应目录。
  • OpenCV默认会编译很多功能,有些功能需要先自己安装依赖包。可以只选择自己需要的OpenCV功能编译,将会节省很多时间。

OpenCV源码下载

OpenCV源码地址:https://github.com/opencv/opencv.git

这里使用的tag为4.8.0

Cmake安装(cmake-3.25.3-windows-x86_64):

  • 下载地址:https://cmake.org/download/

mingw安装(C/C++编译器):

  • 注意一定要下载x86_64-posix-seh MinGW版本的MinGW,否则后面编译会出错
  • 下载地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/
  • x86_64:64位
  • posix :启用C ++ 11 / C11多线程功能。 使libgcc依赖于libwinpthreads,所以即使不直接调用pthreads API,也会分发winpthreads DLL。 分配一个更多的DLL与您的应用程序没有任何问题。
  • win32 :没有C ++ 11多线程功能。
  • sjlj,seh,dwarf都是异常处理模型。sjlj和seh是64位上的处理模型,sjlj是 C 标准库就有的东西,seh是2014年新发明的,seh较新性能较好。dwarf 和 sjlj 是32位上的两种异常处理模型。同样的,dwarf 的性能要优于 sjlj ,但是它不支持 64位 。
  • 所以我选择下载的是x86_64-posix-seh。
  • 配置环境变量,在系统变量PATH中添加:D:\software\mingw64\bin。注意路径不要有中文和空格。

生成opencv的makefile文件

  • 打开cmake-gui

  • 点击Browse Source选择选择 opencv 下的 sources文件夹

  • 点击Browse Build选择选择 opencv 下的 mingw_build文件夹

  • 点击Configure,指定编译器

在这里插入图片描述

  • 分别选择刚刚下载的posix版本MinGW-W64下的gccg++
    在这里插入图片描述

  • 点击Finish,等待完成

如遇到一下问题,请打开下面的文件

  • 按照日志里的下载地址分别下载这三个文件并放入/source/.cache/ffmpeg中,使用certutil -hashfile 文件名 MD5获取每个文件的MD5,以MD5-文件名重新命名这三个文件。

在这里插入图片描述

  • 回到cmake-gui,重新点击Configure,若无其他报错则点击Generate生成Makefile文件。

编译

  • 打开命令行进入 mingw-build文件夹,使用mingw32-make -j8编译(8为核心数,请自行调整),编译速度大概10分钟左右。

  • 编译成功后,使用mingw32-make install命令将编译生成的文件整合到opencv/mingw_build/install目录中

配置环境变量

配置环境变量,将opencv/mingw_build/install/x64/mingw/bin加入环境变量中的path中。

在clion项目中使用opencv

新建项目,编辑CMakeLists.txt

cmake_minimum_required(VERSION 3.22)
project(my_cv)set(CMAKE_CXX_STANDARD 17)add_executable(my_cv main.cpp)# 设置OpenCV目录
set(OpenCV_DIR D:/Users/opencv48/opencv/mybuild/install)
# 搜索OpenCV目录
find_package(OpenCV REQUIRED)
# 链接OpenCV库文件
target_link_libraries(my_cv ${OpenCV_LIBS})

编辑main.cpp

#include <iostream>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat img = imread("D:/workspace/cpp_workspace/my-cv/data/img/lena.jpg");namedWindow("test", WINDOW_AUTOSIZE);imshow("test", img);waitKey();return 0;
}

注:
cmake版本:

C:\Users\zishi>cmake -version
cmake version 3.25.3CMake suite maintained and supported by Kitware (kitware.com/cmake).

g++版本:

C:\Users\zishi>g++ --version
g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
http://www.lryc.cn/news/102125.html

相关文章:

  • 【机器学习】Cost Function
  • 【黑马头条之内容安全第三方接口】
  • 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)
  • STM32 HAL库函数——HAL_UART_RxCpltCallback()详解
  • 前端调用合约如何避免出现transaction fail
  • 选择器的使用
  • 软考A计划-系统集成项目管理工程师-项目干系人管理-上
  • F5 LTM 知识点和实验 2-负载均衡基础概念
  • 安全学习DAY08_算法加密
  • OpenCloudOS 与PolarDB全面适配
  • 如何在Linux系统中使用yum命令安装MySQL
  • 在Ail Linux中手动配置IPv6
  • TCP如何保证服务的可靠性
  • 【云原生系列】openstack搭建过程及使用
  • 无涯教程-jQuery - Menu组件函数
  • Django用户登录验证和自定义验证类
  • json-server详解
  • MacOS Monterey VM Install ESXi to 7 U2
  • 哈工大计算机网络课程网络安全基本原理详解之:消息完整性与数字签名
  • K8s:K8s 20个常用命令汇总
  • DHCP防护原理
  • leetcode2434. 使用机器人打印字典序最小的字符串 出栈顺序 贪心+栈
  • 【程序设计】一文讲解程序设计目标:高内聚,低耦合
  • nginx mirror代码分析
  • Python代理模式介绍、使用
  • 《MySQL45讲》笔记—索引
  • Android usb host模式通信示例
  • 开源Blazor UI组件库精选:让你的Blazor项目焕然一新!
  • MATLAB RANSAC圆柱体点云拟合 (28)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(七):自动微分