QT インストール OpenCv ステップ プロセスと関連問題 (Windows での QT Creator プログラミングに基づく)

序文

   QT に OpenCV 環境をインストールするプロセスは比較的複雑です。ネチズンが QT で OpenCV を開発したい場合は、私が環境をインストールするときに遭遇した落とし穴も含め、私がリストした手順に辛抱強く従って段階的に環境をインストールする必要があります。 , 手順にすべてがリストされています。理解できないネチズンがいる場合は、コメントするかプライベートメッセージを送ってください。

1. ソフトウェアの準備

1. Qt ソフトウェア
2. CMake
3. OpenCV

2. 環境構築

1. QT のインストール: バージョン 5.12.4 (私が使用しているバージョン)
(1) D ドライブにインストール (任意のドライブを選択)
(2) QT 環境変数をシステム環境変数 PATH に追加します
。次の 2 つ QT 環境変数をシステム PATH に追加します:
D:\QTCreator_Windows\5.12.4\mingw73_64\bin
D:\QTCreator_Windows\Tools\mingw730_64\bin
2. CMake
公式 Web サイトをインストールします:
https://cmake.org/ files/
バージョンは必要ありません :
v3.12/ (私が使用しているバージョン)----cmake-3.12…4-win64-64.zip
(1) D ドライブにインストールします (任意のドライブを選択します。できれば同じドライブにあります)。 drive as QT)
( 2) CMake 環境変数をシステム環境変数 PATH
D:\Opencv_Window\cmake-3.12.4-win64-x64\bin に追加します。

3. opencv
公式 Web サイトをインストールします:
https://opencv.org/releases
バージョン:
OpenCV-3.4.9 (私が使用しているバージョン) - Windows を選択します - .exe (opencv-3.4.9-vc14_vc15.exe) のダウンロードを自動的に開始します
( 1) opencv-3.4.9-vc14_vc15.exe を D ドライブに配置します
(2) ダブルクリックして実行し、opencv-3.4.9-vc14_vc15.exe を解凍します。2
つのファイルが表示されます:
build file: このファイルは、コンパイル後の Windows 環境 実行可能
ソース ファイル: このファイルはコンパイルされていないソース コードです。QT で opencv を実行する場合は、このファイル内のコードを再コンパイルする必要があります (そのため、この時点では、以前にダウンロードした CMake を使用して再コンパイルする必要があります) opencv ソース コード)
( 3) cmake が opencv を設定します
a. D:\Opencv_Window\cmake-3.12.4-win64-x64\bin\cmake-gui.exe を開きます
b. opencv にソース ファイルを追加します。
ソース コードは次のとおりです。 D:/Opencv_Window /opencv/sources
ここで、バイナリをビルドします: D:/Opencv_Window/opencv/rebuild_for_qt (注:rebuild_for_qt ファイルは、コンパイルされたコードを保存するために独自に作成したファイルです) c. [configure] をクリックして構成を開始します。ポップアップ
インターフェイス
:
》プロジェクトのジェネレーターを指定し、選択: MinGw makefiles
》 次に選択: ネイティブ コンパイラーの指定

ポップアップ インターフェイスで[次へ] をクリック
》C: QT パスの下の GCC を選択します
: D:/QTCreator_Windows/Tools/mingw730_64/bin/gcc .exe
》C++: QT パスで G++ を選択します
: D:/QTCreator_Windows/Tools/mingw730_64/bin/g++.exe
》「完了」をクリックして構成を開始します

在点击Finish配置时出现:
	由于找不到libwinpthread-1.dll,无法继续执行代码,重新安装可能会解决此问题
说明:QT的环境变量未添加到系统环境PATH中(我当时添加的时候是用了中文字符的冒号所以报错

》 設定後に「設定完了」が表示されます
》 設定を再度変更します
ENABLE_CXX11 (チェックあり)
WITH_OPENGL (チェックあり)
WITH_QT (チェックあり)
WITH_IPP (チェックなし)
その他の選択肢はデフォルトにすることができます
》 もう一度 [Configure] をクリックします
>> もう一度 [Configure] をクリックして
名前 CMAKE_CONFIGURATION_TYPES を選択し、[Value] の下の [Debug] を削除します。 「Release」だけを残し、
「Configure」をクリックし続けます。

这时候会报错提示FFMPEG下载失败,无法连接到服务器,打开CMakeDownloadLog.txt查看详细信息----这会导致编译后的OpenCV无法用VideoCapture打开视频(报错内容:CMake Warning at cmake/OpenCVDownload.cmake:202 (message): FFMPEG: Download failed: 7;"Couldn't connect to server"For details please refer to the download log file: D:/Opencv_Window/opencv/rebuild_for_qt/CMakeDownloadLog.txt
Call Stack (most recent call first): 3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)cmake/OpenCVFindLibsVideo.cmake:227 (download_win_ffmpeg) CMakeLists.txt:683 (include))
查看CMakeDownloadLog.txt需要以下3个文件:
opencv_ffmpeg.dll文件
opencv_ffmpeg_64.dll文件
ffmpeg_version.cmake文件
            ****************** 上記の質問は非常に重要です*****************
この問題は次のように解決されます。

(1) CMake のコンパイル後に生成されたD:\Opencv_Window\opencv\rebuild_for_qt\CMakeDownloadLog.txtテキストを表示します。テキストの内容は次のとおりです (解決策はテキスト コンテンツでコメントした場所です)。

#use_cache "D:/Opencv_Window/opencv/sources/.cache" 
#do_copy "opencv_ffmpeg.dll" "168635a192fc2d2ae7d7d40150f0b349" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg.dll" "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg"
//上面是说需要将缺省的“opencv_ffmpeg.dll”文件拷贝到“D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg”路径下
#missing "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg/opencv_ffmpeg.dll"
#check_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/168635a192fc2d2ae7d7d40150f0b349-opencv_ffmpeg.dll"
//这一行是说可以将缺省的“opencv_ffmpeg.dll”文件以MD5编码命名(例如:168635a192fc2d2ae7d7d40150f0b349-opencv_ffmpeg.dll--该形式就是MD5编码命名,后面你只需要下载opencv_ffmpeg.dll文件然后在该文件前复制“168635a192fc2d2ae7d7d40150f0b349-”加上即可)之后拷贝到“D:/Opencv_Window/opencv/sources/.cache/ffmpeg/”路径下
#mismatch_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/168635a192fc2d2ae7d7d40150f0b349-opencv_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e"
#delete "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/168635a192fc2d2ae7d7d40150f0b349-opencv_ffmpeg.dll"
#cmake_download "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/168635a192fc2d2ae7d7d40150f0b349-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg.dll"
#try 1
# timeout on name lookup is not supported
#   Trying 0.0.0.0...
# TCP_NODELAY set
# connect to 0.0.0.0 port 443 failed: Address not available
# Failed to connect to raw.githubusercontent.com port 443: Address not available
# Closing connection 0
# 

#do_copy "opencv_ffmpeg_64.dll" "cbc25f8f2954475b127c7558558c18e6" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg_64.dll" "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg"
//上面是说需要将缺省的“opencv_ffmpeg_64.dll”文件拷贝到“D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg”路径下
#missing "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg/opencv_ffmpeg_64.dll"
#check_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/cbc25f8f2954475b127c7558558c18e6-opencv_ffmpeg_64.dll"
#mismatch_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/cbc25f8f2954475b127c7558558c18e6-opencv_ffmpeg_64.dll" "d41d8cd98f00b204e9800998ecf8427e"
//这一行是说可以将缺省的“opencv_ffmpeg.dll”文件以MD5编码命名之后拷贝到“D:/Opencv_Window/opencv/sources/.cache/ffmpeg/”路径下
#delete "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/cbc25f8f2954475b127c7558558c18e6-opencv_ffmpeg_64.dll"
#cmake_download "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/cbc25f8f2954475b127c7558558c18e6-opencv_ffmpeg_64.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg_64.dll"
#try 1
# timeout on name lookup is not supported
#   Trying 0.0.0.0...
# TCP_NODELAY set
# connect to 0.0.0.0 port 443 failed: Address not available
# Failed to connect to raw.githubusercontent.com port 443: Address not available
# Closing connection 0
# 

#do_copy "ffmpeg_version.cmake" "3b90f67f4b429e77d3da36698cef700c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/ffmpeg_version.cmake" "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg"
//上面是说需要将缺省的“ffmpeg_version.cmake”文件拷贝到“D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg”路径下
#missing "D:/Opencv_Window/opencv/rebuild_for_qt/3rdparty/ffmpeg/ffmpeg_version.cmake"
#check_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake"
#mismatch_md5 "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake" "d41d8cd98f00b204e9800998ecf8427e"
//这一行是说可以将缺省的“ffmpeg_version.cmakel”文件以MD5编码命名之后拷贝到“D:/Opencv_Window/opencv/sources/.cache/ffmpeg/”路径下
#delete "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake"
#cmake_download "D:/Opencv_Window/opencv/sources/.cache/ffmpeg/3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/ffmpeg_version.cmake"
#try 1
# timeout on name lookup is not supported
#   Trying 0.0.0.0...
# TCP_NODELAY set
# connect to 0.0.0.0 port 443 failed: Address not available
# Failed to connect to raw.githubusercontent.com port 443: Address not available
# Closing connection 0
# 

(2) 以下の 3 つのファイルをダウンロードします。
opencv_ffmpeg.dll ファイルの
ダウンロード リンク: https://raw.githubusercontent.com
opencv_ffmpeg_64.dll ファイルの
ダウンロード リンク: https://raw.githubusercontent.com
ffmpeg_version.cmake ファイル
のダウンロード リンク: https:/ /raw.githubusercontent.com
(3) 上記 3 つのファイルをダウンロードした後、MD5 命名方法 (前述) で 3 つのファイルを「D:/Opencv_Window/opencv/sources/.cache/ffmpeg/」パス
(4)に保存します。 ) CMake で Configure をクリックし、成功したら、generate をクリックして問題を解決します
4. opencv のコンパイルとインストール
(1) Windows の CMD ターミナルを開き
、コマンドを使用して、インストールされた opencv パスにある新しくコンパイルされたものに切り替えます。
つまり:

>>D:
>>cd Opencv_Window\opencv\rebuild_for_qt 
注:window下的盘符切换与Linux有区别,先输入“D:”切换到D盘,然后再使用cd命令具体切换到哪个目录

(2) opencv をコンパイルするコマンドを入力します (コンパイルには約 10 分かかります)
:
    mingw32-make // 入力後、コンパイルが完了するまで待ちます
(3) コンパイルが完了したら、コマンドを入力して、 opencv ライブラリ、
つまり:
    mingw32-make install // 成功後に再インストールします。コンパイルされた opencv 環境がシステム PATH に追加されます
(4) 新しい opencv 環境を PATH に追加します

将:
D:\Opencv_Window\opencv\rebuild_for_qt\bin
D:\Opencv_Window\opencv\rebuild_for_qt\install\x64\mingw\bin
添加到系统PATH中

3. QT プロジェクトを構成して opencv を検証する

1. QTCreator を使用して QT プロジェクトを作成します
2. 次のコードを QT プロジェクト file.pro に追加します。

INCLUDEPATH +=D:\Opencv_Window\opencv\rebuild_for_qt\install\include
              D:\Opencv_Window\opencv\rebuild_for_qt\install\include\opencv
              D:\Opencv_Window\opencv\rebuild_for_qt\install\include\opencv2

LIBS  +=-L D:\Opencv_Window\opencv\rebuild_for_qt\install\x64\mingw\lib\libopencv_*.dll.a  //意思是将编译好的所有opencv库添加到QT中

3. opencv コードを実行すると、正常に実行されます。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    Mat image = imread("the photo road!!!");//注意imread函数、waitkey函数都是属于cv命名空间里的内容,所以程序之前要添加using namespace cv
    namedWindow("Display window",WINDOW_AUTOSIZE);
    imshow("Display window",image);
    waitKey(0);
    Dialog w;
    w.show();
    return a.exec();
}

おすすめ

転載: blog.csdn.net/Mr_zhang1911116/article/details/126891870