https://www.toutiao.com/article/7277385909128626699/?log_from=ab40236bf4bd7_1694533586918 (一個(gè)開(kāi)源跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù)可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上) OpenCV是一個(gè)開(kāi)源跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量而且高效——由一系列C函數(shù)和少量C++類(lèi)構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。 OpenCV中很多高級(jí)功能如人臉識(shí)別等皆包含在Contrib擴(kuò)展模塊中,要使用這些功能需要將Contrib與OpenCV一起聯(lián)合編譯。 本文詳細(xì)介紹在windows平臺(tái)下,Qt 5.14.2+OpenCV 4.5.4環(huán)境的搭建過(guò)程,親測(cè)有效。后續(xù)文章介紹基于OpenCV的圖片處理方法。 1 工具及下載1.1 安裝CMake CMake是用于編譯的基本工具,官網(wǎng)下載獲得最新版本的安裝包(鏈接: 其中,在“Install options”頁(yè)面中選中“Add CMake to the system PATH for all users”單選按鈕添加系統(tǒng)路徑變量??梢酝瑫r(shí)勾選“Create CMake Desktop Icon”復(fù)選框,以便在安裝完成后在桌面上創(chuàng)建CMake的快捷方式圖標(biāo)。 接下去的安裝過(guò)程很簡(jiǎn)單,跟著向?qū)У闹敢虏僮骷纯桑钡酵瓿砂惭b為止。 1.2 添加系統(tǒng)環(huán)境變量 進(jìn)入Windows系統(tǒng)環(huán)境變量設(shè)置對(duì)話(huà)框。可以看到,由于剛才的設(shè)置,CMake已經(jīng)自動(dòng)將其安裝路徑“C:\Program Files\CMake\bin”寫(xiě)入環(huán)境變量Path中。 在環(huán)境變量Path的編輯框中,進(jìn)一步添加Qt相關(guān)的路徑變量: C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin C:\Qt\Qt5.14.2\5.14.2\mingw73_64\lib C:\Qt\Qt5.14.2\Tools\mingw730_64\bin 這樣設(shè)置后,系統(tǒng)就能同時(shí)識(shí)別到Qt與CMake兩者所在的路徑。 1.3 安裝Python 由于OpenCV庫(kù)的某些功能模塊的運(yùn)行還依賴(lài)于Python平臺(tái),故編譯前還要在自己的計(jì)算機(jī)操作系統(tǒng)中安裝Python語(yǔ)言,本文安裝的是64位Python 3.8,從Python官網(wǎng)下載獲得安裝包“python-3_8.10-amd64.exe”,雙擊啟動(dòng)安裝向?qū)Ъ纯伞?/p> 1.4 下載OpenCV 可以在官網(wǎng)下載OpenCV,但其網(wǎng)絡(luò)較差,經(jīng)常無(wú)法訪(fǎng)問(wèn)。網(wǎng)上找到一個(gè)好心人建立的庫(kù)地址: 關(guān)于opencv的版本,目前最新的是4.8.0。我用其編譯,會(huì)報(bào)如下的錯(cuò)誤: error: temporary of non-literal type 'google::protobuf::internal::CallOnceIn… 上網(wǎng)搜索了一下,發(fā)現(xiàn)原因在于Qt 5.14.2自帶的MinGW編譯器,不支持最新版本opencv中的protobuf(版本3.19)。而OpenCV 4.5.4版本中的protobuf版本是3.5.1,沒(méi)有C++語(yǔ)法的新特性,因此不會(huì)出現(xiàn)問(wèn)題。 因此,我們選擇OpenCV 4.5.4版,得到“opencv-4.5.4.zip”。 1.5 下載Contrib OpenCV官方將己經(jīng)穩(wěn)定成熟的功能放在OpenCV包里發(fā)布,而正在發(fā)展中尚未成熟的技術(shù)則統(tǒng)一置于Contrib擴(kuò)展模塊中。通常情況下,下載的OpenCV中不包含Contrib擴(kuò)展庫(kù)的內(nèi)容,如果只是進(jìn)行一般的圖片、視頻處理,則僅使用OpenCV就足夠了。但是OpenCV中默認(rèn)不包含SIFT、SURF等先進(jìn)的圖像特征檢測(cè)技術(shù),另外一些高級(jí)功能(如人臉識(shí)別等)都在Contrib擴(kuò)展庫(kù)中,若欲充分發(fā)揮OpenCV的強(qiáng)大功能,則必須將其與Contrib擴(kuò)展庫(kù)放在一起聯(lián)合編譯使用。 選擇Contrib擴(kuò)展庫(kù)的版本必須與OpenCV的版本嚴(yán)格一致,這里選擇4.5.4版,下載得到“opencv_contrib-4.5.4.zip”。 2 編譯前準(zhǔn)備我們使用CMake將OpenCV及其對(duì)應(yīng)的Contrib聯(lián)合編譯為可供使用的Qt庫(kù),在執(zhí)行編譯之前,還要做如下準(zhǔn)備工作。 2.1 準(zhǔn)備目錄 (1) 在D盤(pán)根目錄下新建“OpenCV\Opencv_4.5.4-Source”文件夾,將下載得到的OpenCV庫(kù)的“opencv-4.5.4.zip”包解壓,將得到的所有文件復(fù)制到該文件夾中。 (2) 在D盤(pán)根目錄下新建“OpenCV\Contrib_4.5.4-Source”文件夾,將下載得到的Contrib擴(kuò)展庫(kù)的“opencv_contrib-4.5.4.zip”包解壓,將得到的所有文件復(fù)制到該文件夾中。 (3) 在D盤(pán)根目錄下再新建一個(gè)“OpenCV\Opencv_4.5.4-Build”文件夾,用于存放編譯后生成的文件和庫(kù)。 2.2 改動(dòng)源文件 新版的OpenCV源代碼與編譯器之間存在某些不兼容之處。參考了一些內(nèi)容,對(duì)OpenCV庫(kù)的源文件進(jìn)行了修改。 (1)修改:“D:\OpenCV\Opencv_4.5.4-Source\modules\videoio\src\cap_dshow.cpp”文件,增加宏定義語(yǔ)句:#define STRSAFE_NO_DEPRECATE,修改后如下: (2) 修改:“D:\ OpenCV\Opencv_4.5.4-Source\modules\photo\test\test_hdr.cpp”文件,增加頭文件包含“#include<ctime>”和“#include<cstdlib>”,如下所示, 3 編譯配置經(jīng)過(guò)以上各步的前期準(zhǔn)備后,就可以正式開(kāi)始配置編譯信息了。 3.1 設(shè)置路徑 首先打開(kāi)CMake工具進(jìn)行編譯相關(guān)的配置。雙擊桌面圖標(biāo)“CMake(cmake-gui)”,啟動(dòng)CMake,出現(xiàn)CMake主界面。 單擊右上角的“Browse Source...”按鈕,選擇待編譯的源代碼路徑為“ 3.2 選擇編譯器 設(shè)置好路徑后,單擊左下角的“Configure”按鈕,彈出如下圖所示的窗口 選中“Specify native compilers”單選按鈕表示由用戶(hù)來(lái)指定本地編譯器,然后從下拉列表中選擇所用的編譯器為Qt自帶的“MinGW Makefiles”。 單擊“Next”按鈕,在彈出的如下圖所示的界面上要求用戶(hù)指定編譯器所對(duì)應(yīng)的C/C++編譯程序路徑,這里選擇C編譯程序的路徑為“ 單擊“Finish”按鈕回到CMake主界面,此時(shí)主界面上的“Configure”按鈕變?yōu)椤癝top”按鈕,右邊進(jìn)度條顯示進(jìn)度,同時(shí)下方輸出一系列信息,表示編譯器配置正在進(jìn)行中,如下圖所示 隨后,在主界面中央生成了一系列紅色加亮選項(xiàng)條的列表,同時(shí)下方信息欄中輸出“Configuring done”,表示編譯器配置完成。 3.3 設(shè)置編譯選項(xiàng) 這些紅色加亮的選項(xiàng)并非都是必須編譯的功能,在其中要確保選中“WITH_OPENGL”和“WITH_QT”這兩個(gè)編譯選項(xiàng)。同時(shí),要確保取消勾選“WITH_MSMF”編譯選項(xiàng)。 另外,為了將Contrib擴(kuò)展庫(kù)與OpenCV無(wú)縫整合,還需要設(shè)置OpenCV的外接模塊路徑,如下圖所示,從眾多的紅色加亮選項(xiàng)條中找到一個(gè)名為“OPENCV_EXTRA_MODULES_PATH”的選項(xiàng),設(shè)置其值為“ 設(shè)置完成后,再次單擊“Configure”按鈕,界面上的紅色加亮的選項(xiàng)全部消失后,點(diǎn)擊Generate按鈕,在下方信息欄中輸出“Generating done”,表示編譯選項(xiàng)全部配置完成,如圖所示。 提示:如果此時(shí)CMake主界面上仍存在紅色加亮的選項(xiàng),則表示配置過(guò)程中發(fā)生異常。解決辦法是,再次單擊“Configure”按鈕重新進(jìn)行配置,直到所有的紅色加亮的選項(xiàng)完全消失為止。 4 開(kāi)始編譯所有的設(shè)置項(xiàng)都完成后,就可以開(kāi)始編譯了。打開(kāi)Windows命令行,進(jìn)入到事先建好的編譯生成目標(biāo)目錄“D:\OpenCV\Opencv_4.5.4-Build”下,輸入編譯命令:mingw32-make 啟動(dòng)編譯過(guò)程,如圖所示。 命令窗口中不斷地輸出編譯過(guò)程中的信息,同時(shí)顯示編譯的進(jìn)度。這個(gè)編譯過(guò)程需要等待1個(gè)小時(shí)左右,且比較耗計(jì)算機(jī)內(nèi)存。為加快編譯進(jìn)度,建議在編譯開(kāi)始前關(guān)閉系統(tǒng)中其他應(yīng)用軟件和服務(wù)。另外,由于編譯器還會(huì)聯(lián)網(wǎng)下載所需的組件,為使其工作順利,避免不必要的打擾,建議開(kāi)始編譯前就關(guān)閉殺毒軟件,同時(shí)關(guān)閉Windows防火墻。 在進(jìn)度顯示100%時(shí),出現(xiàn)“Built target opencv_version_win32”信息,表示編譯成功,如下圖所示。 5 安裝OpenCV庫(kù)編譯完成的OpenCV庫(kù)必須在安裝后才能使用,在命令行中輸入: mingw32-make install 安裝OpenCV庫(kù),命令窗口中輸出安裝過(guò)程及進(jìn)度,安裝過(guò)程比編譯過(guò)程要快得多,很快就能安裝好。 此時(shí),打開(kāi)“D:\OpenCV\Opencv_4.5.4-Build”文件夾,可以發(fā)現(xiàn)其下己經(jīng)編譯生成了很多文件,其中有一個(gè)名為“install”的子目錄,進(jìn)入其中即“D:\OpenCV\Opencv_4.5.4-Build\install\x64\mingw\bin”文件夾中的所有文件就是編譯安裝好的OpenCV庫(kù)文件。 最后,將D:\OpenCV\Opencv_4.5.4-Build\install\x64\mingw\bin添加到系統(tǒng)環(huán)境變量PATH中。 6 測(cè)試6.1 新建項(xiàng)目 新建Qt項(xiàng)目,類(lèi)型為Qt Widgets Application,編譯器使用MinGW 64-bit,與OpenCV庫(kù)的編譯器一致。 6.2 項(xiàng)目文件 打開(kāi)項(xiàng)目文件,添加如下語(yǔ)句: INCLUDEPATH += D:\OpenCV\Opencv_4.5.4-Build\install\include LIBS += D:\OpenCV\Opencv_4.5.4-Build\install\x64\mingw\lib\libopencv_*.a 6.3 程序代碼 修改mainwindows.cpp,如下 #include "mainwindow.h" #include "ui_mainwindow.h" #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); Mat image=imread("D:/OpenCV/test.jpg",1); // 絕對(duì)路徑 namedWindow("Display window",WINDOW_AUTOSIZE); imshow("Display window",image); } MainWindow::~MainWindow() { delete ui; } 6.4 編譯運(yùn)行 至此,OpenCV安裝終于完成! ———————————————— 覺(jué)得有用的話(huà)請(qǐng)關(guān)注點(diǎn)贊,謝謝您的支持! 對(duì)于本系列文章相關(guān)示例完整代碼有需要的朋友,可關(guān)注并在評(píng)論區(qū)留言! 評(píng)論: OpenCV中很多高級(jí)功能如人臉識(shí)別等皆包含在Contrib擴(kuò)展模塊中,要使用這些功能需要將Contrib與OpenCV一起聯(lián)合編譯。另外,為了將Contrib擴(kuò)展庫(kù)與OpenCV無(wú)縫整合,還需要設(shè)置OpenCV的外接模塊路徑,如下圖所示,從眾多的紅色加亮選項(xiàng)條中找到一個(gè)名為“OPENCV_EXTRA_MODULES_PATH”的選項(xiàng),設(shè)置其值為“D:/OpenCV/Contrib_4.5.4-Source/modules”(即之前在準(zhǔn)備時(shí)存放Contrib源文件目錄下的“modules”子目錄) |
|