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.pswp.cn/web/46464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46464.shtml
英文地址,請注明出處:http://en.pswp.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; 注…