Windows11+Opencv+Clion コンパイルソースコード

Windows11+Opencv+Clion コンパイルソースコード

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

予防

  • コンパイル プロセスで使用されるソフトウェア、オープン ソース コードなどのすべてのツールのインストール パスには、漢字やスペースが含まれていてはなりません。
  • cmake プロセスによっていくつかのファイルがダウンロードされますが、ローカル エリア ネットワークの場合はダウンロードできない場合がありますので、事前にダウンロードして該当するディレクトリにコピーしておくとよいでしょう。
  • OpenCV はデフォルトで多くの関数をコンパイルしますが、一部の関数は最初に依存関係パッケージをインストールする必要があります。コンパイルに必要な OpenCV 関数のみを選択できるため、時間を大幅に節約できます。

OpenCVソースコードのダウンロード

OpenCV ソースアドレス: https://github.com/opencv/opencv.git

ここで使用されているタグは 4.8.0 です

Cmake のインストール (cmake-3.25.3-windows-x86_64):

mingw のインストール (C/C++ コンパイラ):

  • MinGW の x86_64-posix-seh 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 が配布されます。アプリケーションにもう 1 つの DLL を割り当てることに問題はありません。
  • win32 : C++11 マルチスレッド機能はありません。
  • sjlj、seh、および dwarf はすべて例外処理モデルです。sjlj と seh は 64 ビット処理モデルで、sjlj は C 標準ライブラリに含まれるもので、seh は 2014 年に新しく発明されたもので、seh の方が新しく、パフォーマンスが優れています。dwarf と sjlj は、32 ビットの 2 つの例外処理モデルです。同様に、dwarf のパフォーマンスは sjlj よりも優れていますが、64 ビットをサポートしていません。
  • そこで、x86_64-posix-seh をダウンロードすることにしました。
  • 環境変数を構成し、以下をシステム変数 PATH に追加しますD:\software\mingw64\binパスには漢字やスペースを含めないでください。

opencv メイクファイルを生成する

  • 開けるcmake-gui

  • Browse Sourceopencv の下のソースフォルダーをクリックして選択します

  • Browse Buildopencv の下の mingw_build フォルダーをクリックして選択します

  • クリックしConfigureてコンパイラを指定します

ここに画像の説明を挿入

  • ダウンロードしたばかりの posix バージョン MinGW-W64 の下で、gccとをそれぞれ選択します。g++
    ここに画像の説明を挿入

  • クリックしFinishて完了を待ちます

問題が発生した場合は、次のファイルを開いてください

  • ログ内のダウンロード アドレスに従ってこれら 3 つのファイルをダウンロードし、/source/.cache/ffmpeg に配置し、certutil -hashfile 文件名 MD5各ファイルの MD5を使用してMD5-文件名3 つのファイルの名前を変更します。

ここに画像の説明を挿入

  • cmake-gui に戻り、もう一度クリックし、Configure他にエラーがない場合はGenerate[Generate Makefile]をクリックします。

コンパイル

  • コマンドラインを開いてmingw-buildフォルダーに入り、mingw32-make -j8コンパイルを使用します (8 はコアの数です。ご自身で調整してください)。コンパイル速度は約 10 分です。

  • コンパイルが成功したら、mingw32-make installコマンドを使用してコンパイルされたファイルをopencv/mingw_build/installディレクトリに統合します。

環境変数を構成する

環境変数を構成します。opencv/mingw_build/install/x64/mingw/bin環境変数のパスに追加されます。

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.3

CMake 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.

おすすめ

転載: blog.csdn.net/guo20082200/article/details/132006225