Windows 使用 MinGW 编译 OpenCV

使用 MinGW 编译 OpenCV 是一个不错的选择,特别是如果您想避免使用 Visual Studio。下面是使用 MinGW 和 CMake 编译 OpenCV 的详细步骤。

准备工作

1. 下载 OpenCV 源代码

从 OpenCV GitHub 仓库下载 OpenCV 源代码。

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.x
2. 下载 OpenCV Contrib 源代码

从 OpenCV Contrib GitHub 仓库下载 Contrib 模块。

cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.x
3. 安装 MinGW 和 CMake
  • 下载并安装 MinGW。推荐使用 MSYS2 以获得最新的工具链。
  • 下载并安装 CMake。

环境设置

确保 MinGW 和 CMake 的路径已添加到系统的环境变量 PATH 中。您可以通过在命令提示符中输入以下命令来验证安装:

mingw32-make --version
cmake --version

编译步骤

1. 创建构建目录

在 OpenCV 源代码目录中创建一个新的构建目录:

mkdir build
cd build
2. 使用 CMake 配置和生成构建文件

在构建目录中运行以下命令:

cmake -G "MinGW Makefiles" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX=./install -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DOPENCV_ENABLE_NONFREE=ON

参数说明:

  • -G "MinGW Makefiles":使用 MinGW 生成 Makefile。
  • -DCMAKE_BUILD_TYPE=Release:指定构建类型为 Release。
  • -DCMAKE_VERBOSE_MAKEFILE=ON:启用详细的 Makefile 输出。
  • -DCMAKE_INSTALL_PREFIX=./install:指定安装目录为当前目录下的 install 文件夹。
  • -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules:指定额外模块路径。
  • -DOPENCV_ENABLE_NONFREE=ON:启用非免费模块(如 SIFT)。
3. 编译 OpenCV

运行以下命令进行编译:

mingw32-make -j4

-j4 参数会使用 4 个并行作业进行编译,您可以根据自己的 CPU 核心数调整此参数。

4. 安装 OpenCV

编译完成后,运行以下命令进行安装:

mingw32-make install

这会将编译好的文件安装到 CMAKE_INSTALL_PREFIX 指定的目录中(即 ./install)。

验证安装

编写一个简单的 C++ 程序来验证 OpenCV 是否成功安装:

#include <opencv2/opencv.hpp>
#include <iostream>int main() {cv::Mat image = cv::imread("example.jpg");if (image.empty()) {std::cerr << "Could not open or find the image!" << std::endl;return -1;}cv::imshow("Display window", image);cv::waitKey(0);return 0;
}
编译和运行测试程序

创建一个新的目录,例如 test_opencv,并在其中创建一个 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)
project(TestOpenCV)find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})add_executable(TestOpenCV main.cpp)
target_link_libraries(TestOpenCV ${OpenCV_LIBS})

创建 main.cpp 文件,并将上述测试代码粘贴进去。

运行 CMake 和编译程序:

mkdir build
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make

运行生成的可执行文件:

./TestOpenCV

确保 example.jpg 文件在与可执行文件相同的目录中,或者提供正确的路径。

通过这些步骤,您应该能够在 Windows 上使用 MinGW 成功编译和使用 OpenCV。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rabbitmq生产与消费

一、rabbitmq发送消息 一、简单模式 概述 一个生产者一个消费者模型 代码 //没有交换机&#xff0c;两个参数为routingKey和消息内容 rabbitTemplate.convertAndSend("test1_Queue","haha");二、工作队列模式 概述 一个生产者&#xff0c;多个消费者&a…

如何将PDF转换成可以直接编辑的CAD图纸?

PDF图纸是为了让用户更好的阅览CAD文件&#xff0c;但是&#xff0c;当我们想要对其进行编辑的时候&#xff0c;PDF图纸就是一个麻烦了。那么PDF转换成CAD后可以编辑吗&#xff1f;如何将PDF转换成可以直接编辑的CAD图纸呢&#xff1f;本篇给你答案。 1、启动迅捷CAD编辑器&…

easyui 列表展示 如何解析 ResponseEntity<Page<Monthlycoefficient>> 这样的返回结构

在使用 EasyUI 展示列表数据时&#xff0c;通常需要将后端返回的数据解析为 EasyUI 数据网格&#xff08;datagrid&#xff09;所需的格式。假设你的后端返回的是一个 ​​ResponseEntity<Page<MonthlyCoefficient>>​​​ 结构&#xff0c;其中 ​​Page​​​ 是…

【python学习】爬虫中常使用的urllib和requests库的的背景、定义、特点、功能、代码示例以及两者的区别

引言 urllib是Python标准库中的一个模块&#xff0c;它提供了一系列用于操作URL的功能 requests是一个Python第三方库&#xff0c;由Kenneth Reitz创建&#xff0c;用于简化HTTP客户端的编程 一、urllib的定义 urllib可以操作url&#xff0c;主要分为以下几个子模块&#xff1…

从人工巡检到智能防控:智慧油气田安全生产的新视角

一、背景需求 随着科技的飞速发展&#xff0c;视频监控技术已成为各行各业保障安全生产、提升管理效率的重要手段。特别是在油气田这一特殊领域&#xff0c;由于其工作环境复杂、安全风险高&#xff0c;传统的监控方式已难以满足实际需求。因此&#xff0c;基于视频监控AI智能…

侧开知识点合集2

一、try .... catch.. AccessViolationException异常触发后&#xff0c;下列程序的输出结果为 static void Main(string[] args) { try { throw new AccessViolationException(); Console.WriteLine("error1"); } catch (Exception e) { Console.WriteLi…

ROS2从入门到精通2-3:机器人3D物理仿真Gazebo与案例分析

目录 0 专栏介绍1 什么是Gazebo&#xff1f;2 Gazebo架构2.1 Gazebo前后端2.2 Gazebo文件格式2.3 Gazebo环境变量 3 Gazebo安装与基本界面4 搭建自己的地图4.1 编辑地图4.2 保存地图4.3 加载地图 5 常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习&#xff0c;掌握ROS2底…

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效 上篇作业解题 在前一篇文章的最后,给各位看官留了一个作业,如上图所示。本篇文章,我们来公布一下它的源码。 主要实现的思路 四个渐变色的线段,沿着四个方向的依次运动,(运动在加载前执行)使用 …

均值滤波算法及实现

均值滤波器的使用场景&#xff1a; 均值滤波器使用于处理一些如上述蓝色线的高斯噪声场景 红色曲线是经过均值滤波处理后的数据。主要因为均值滤波设置数据缓冲区&#xff08;也即延时周期&#xff09;&#xff0c;使得测量值经过缓冲不会出现特别大的变化。 黄色曲线为高斯噪声…

【iOS】—— 消息传递和消息转发

【iOS】—— 消息传递和消息转发 1. 消息传递SEL选择子IMP快速查找汇编代码查找过程总结消息转送快速查找IMP 慢速查找总结消息传递慢速查找IMP 2. 消息转发动态决议动态解析添加方法 快速转发慢速转发 总结动态决议消息转发消息的三次拯救 1. 消息传递 在iOS中&#xff0c;消…

一、单例模式

文章目录 1 基本介绍2 实现方式2.1 饿汉式2.1.1 代码2.1.2 特性 2.2 懒汉式 ( 线程不安全 )2.2.1 代码2.2.2 特性 2.3 懒汉式 ( 线程安全 )2.3.1 代码2.3.2 特性 2.4 双重检查2.4.1 代码2.4.2 特性 2.5 静态内部类2.5.1 代码2.5.2 特性 2.6 枚举2.6.1 代码2.6.2 特性 3 实现的要…

【乐吾乐2D可视化组态编辑器】快捷键

快捷键 乐吾乐2D可视化组态编辑器demo&#xff1a;https://2d.le5le.com/ 快捷键描述空格 鼠标拖拽移动画布鼠标右键拖拽移动画布Ctrl 滚轮缩放画布Ctrl 点击 Pen多选Ctrl A全选Ctrl C复制Ctrl X剪切Ctrl V粘贴&#xff0c;alt视图中心粘贴&#xff0c;shift原位粘贴…

查询优化 -- UNION 用法

union 不返回重复行&#xff08;所有字段值相同的行&#xff09; union all 返回所有行 // 每类最多统计100条 select server_id,count(1) as logs from ( SELECT server_id FROM log WHERE log.type "a" AND server_id1 limit 100 ) UNION select server_id,coun…

谷粒商城-全文检索-ElasticSearch

1.简介 一个分布式的开源搜索和分析引擎,可以 秒 级的从海量数据中检索 主要功能:做数据的检索和分析(MySQL专攻于数据的持久化存储与管理CRUD达到百万以上的数据MSQL就会很慢,海量数据的检索和分析还是要用ElasticSearch) 用途:我们电商项目里的所有的检索功能都是由Elasti…

Java中为什么不能直接创建泛型数组

在Java中&#xff0c;不能直接创建泛型数组的主要原因是类型擦除和类型安全问题。 类型擦除 Java中的泛型是通过类型擦除&#xff08;Type Erasure&#xff09;实现的&#xff0c;这意味着在编译时&#xff0c;泛型类型会被转换成原始类型&#xff08;如 List<T> 会被转…

网络安全-网络安全及其防护措施9

41.网络故障排除 网络故障排除的定义和重要性 网络故障排除是指通过系统化的方法和工具&#xff0c;识别、诊断和解决网络中出现的问题&#xff0c;以恢复正常的网络服务和性能。有效的故障排除可以减少停机时间&#xff0c;提升网络的稳定性和可靠性。 故障排除的步骤 问题…

基于X86+FPGA+AI数字化医疗设备:全自动尿沉渣检测仪

助力数字医疗发展&#xff0c;信迈可提供全自动尿沉渣检测仪专用计算机 随着信息技术的不断进步&#xff0c;医疗也进入了一个全新的数字化时代。首先是医疗设备的数字化&#xff0c;大大丰富了医疗信息的内涵和容量&#xff0c;具有广阔的市场发展前景。 数字化医疗设备&…

使用Redis的SETNX命令实现分布式锁

什么是分布式锁 分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中&#xff0c;由于多个节点可能同时访问和修改同一个资源&#xff0c;因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作&#xff0c;以避免数据不一致或…

白骑士的C++教学高级篇 3.1 文件操作

系列目录 上一篇&#xff1a;白骑士的C教学进阶篇 2.4 标准模板库&#xff08;STL&#xff09; 文件操作是C编程中的一个重要部分&#xff0c;允许程序与外部存储设备进行交互&#xff0c;从而实现数据的持久化存储和读取。C标准库提供了丰富的文件操作功能&#xff0c;包括文…

嵌入式香橙派人工智能AI开发板详细操作与远程聊天实现

大家好&#xff0c;今天给大分享一个OrangePi AIpro&#xff08;20T&#xff09;采用昇腾作为主控芯片的开发板&#xff0c;开箱以及对应功能的详细实现。 第一&#xff1a;板子基本介绍 接通电源给对应的开发板上电&#xff0c;观察其中的现象&#xff0c;如下&#xff1a; 注…