これは、opencv および Ceres ソルバーのサードパーティ依存ライブラリの構成について私がかなり前に書いたチュートリアルです。そのため、古い vs2015 を使用しました。現在 vs2019 も引き続き適用できますが、vs2019 は vcpkg を使用してサードパーティ ライブラリを直接構成することも簡単にできます。必要なコマンド ライン ステートメントは数行だけですが、ネットワークの要件が比較的高く、非常に簡単にクラッシュし、忍耐力が試されます。良好なネットワークを持つ友人が vcpkg を使用している場合は、さらに多くの作業が必要になります。便利。
OpenCV+contrib 構成
1 つ目は、vs2015 をインストールし、圧縮ファイルをダウンロードして解凍し、vs_community.exe を取得します。
[インストール] をダブルクリックし、インストール プロセス中に [カスタム インストール] を選択してから、[Visual C++] を選択します。次に、その指示に従って段階的に実行します。
vs2015 をインストールした後、opencv 公式 Web サイトに移動してhttps://opencv.org/適切な opnecv バージョンをダウンロードし、対応する適切な contrib バージョンhttps://github.com/opencv/opencv_contrib/releasesをダウンロードします。ダウンロード後は解凍するだけです。解凍後は、図のようになります。
cmake-gui を開き、ソース コードを設定します — F:/opencv/opencv/sources (つまり、ソース ファイルの場所)、バイナリをビルドします — F:/opencv/opencv/mybuild (コンパイルされたファイルの場所)ファイル、通常は新しいファイルが作成されます。配置するフォルダー、管理が簡単です)
「構成」をクリックすると、コンパイルに使用する言語を選択できます。ここでは、コンパイルに Visual Studio 14 2015 を選択し (コンピューターにインストールされているバージョンに応じて選択します)、その他のデフォルトを選択して、右下の「完了」をクリックします。コーナー。Configure 後に「configurationnedned」と表示されれば、最初のソースコードの設定は完了です。最初の設定後はすべて赤になる場合がありますが、さらに数回設定すると白になります。
次に、OPENCV_EXTRA_MODULES_RATH 項目を見つけて、解凍したばかりの opencv_contrib-3.4.10 に modules ディレクトリを追加し、それを選択して再度 [configure] をクリックし、[configure] が完了したことを表示して [Generate] をクリックしてコンパイルを開始します。次に、 「構成が完了しました」、「生成が完了しました」と表示されます。
この時点で、mybuild フォルダーの下にある CMakeDownloadLog.txt を開いて、必要なファイルがすべてダウンロードされたかどうかを確認できます (インストール プロセスはオンラインで行う必要があることに注意してください)。
上記の内容でダウンロードログファイルが開かれれば、ファイルのダウンロードは成功しています。
必要なファイルは外部ネットワーク経由でダウンロードする必要があるため、通常はファイルが正常にダウンロードできず、ダウンロードログファイルを開くと以下のステータスが表示され、以下のフィードバックが表示されます。
#試して1
# 名前検索のタイムアウトはサポートされていません
# getaddrinfo(3)がraw.githubusercontent.com で失敗しました:443
# ホスト「raw.githubusercontent.com」を解決できませんでした
# 接続を閉じる 0
これはまさに私に起こったことです。初期の頃は、この URL はブロックされていませんでした。一般に、この部分は以前のチュートリアルではカバーされていませんでした。2019 年と 20 年のチュートリアルでは、失敗したファイルのダウンロードに関連する解決策がさらに増えましたが、そのほとんどは比較的不足しています。腕と脚。
ファイルをダウンロードできない問題を解決するには 3 つの方法があります。いずれかを選択してください。
- もちろん、科学的なインターネット アクセスを通じて opencv を設定するのが最善の方法ですが、ここで注意すべき点が 1 つあります。
- https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/ffmpeg_version.cmake は直接ダウンロードできませんが、ffmpeg_version.cmake を直接開くと、Web ページを右クリックして「ffmpeg_version.cmake.txt として保存」を選択できます。 、ffmpeg_version.cmakeに変更しました。ここで、自分で新しい txt を作成し、Web ページの内容を直接コピーし、サフィックスが .cmake の場合は機能せず、md5 が一致しないことを示すメッセージが表示されます。
- OpenCV の異なるバージョンに対応する opencv_ffmpeg.dll などの欠落ファイルの md5 署名は異なります
- 科学的にインターネットにアクセスできない人は、他の方法からダウンロードできます
インターネット上には、これらの欠落ファイルを提供している多くのブロガーがすでに存在します。必要なファイルをすべてダウンロードして、対応するフォルダーに配置するだけです。いわゆる対応するフォルダーは、ダウンロード ログ ファイル内にあります。引用符は、ダウンロードされたファイルの場所です。ファイルと対応するファイル名。赤いボックスはファイルに対応する md5 コードで、対応する URL はボックスの後ろにあります。
3. raw.githubusercontent.com の実際のアドレスを見つけて、システム ファイルのホストを変更します。
その後、ファイルがダウンロードできない問題を解決したブログを見たところ、ファイルが正常にダウンロードできなかった原因は、 https://raw.githubusercontent.com という Web サイトにアクセスできなかったためでした。
この解決策は win10 を例にしています
1: IPAddress.com Web サイトにアクセスして、raw.githubusercontent.com の実際のアドレスをクエリします。
2: C:\Windows\System32\drivers\etc\hosts を開きます (管理者権限で開く必要があります)
次のように 199.232.68.133 raw.githubusercontent.com を追加します。
hosts ファイルはシステム ファイルであるため、変更するには管理者権限が必要ですが、右クリックすると管理者として開くオプションがないことがわかりました。そのため、最初に hosts ファイルをデスクトップに切り取ってから開くことができます。メモ帳を使用して 199.232.68.133 raw.githubusercontent.com を追加し、ホストを元のフォルダーに保存してコピーします。
上記操作後、Cmakeに戻って再設定と生成を行うと、ダウンロードログは下図の状態になっているはずです。
この時点で、次のステップに進むことができます。
mybuild フォルダーを開くと、OpenCV.sln が表示されます (管理者権限で開くことをお勧めします。そうでないとエラーが発生する可能性があります)。
[ALL-BUILD] を右クリックして生成 (または再生成) を選択します。成功後、右クリックして [INSTALL] (プロジェクトのみ) を選択し、[INSTALL] を生成します。生成が成功したら、最後にカスタム フォルダー (mybuild) に移動して確認し、インストールフォルダーを見つけます。に移動して、内部のコンテンツを確認します (以下の図に示すように、注: 後の構成環境では、インストールフォルダーの機能は、 opencv を解凍したばかりのときのビルドフォルダーの機能と同じです)。
この手順の後、構成環境は次のように残ります。
- 環境変数の設定:
[コンピューター] を右クリックし、[プロパティ] - [システムの詳細設定] - [環境変数] - [システム変数] - [PATH] - [編集] を選択し、F:\opencv\opencv\mybuild\install\x86\vc14\bin を追加します (cmake で生成されたインストールのパスに従ってここを変更します) 、64 ビットの場合は、x64 を選択します)。
- 関連するディレクトリを構成する
プロジェクトを開くか、新しい空のプロジェクトを作成し、[表示]、[プロパティ マネージャー] の順にクリックし、任意のプロジェクトの左端にある三角形をクリックし、[デバッグ]、[Win32] の順にクリックし、マウスを Microsoft.Cpp.Win32.user に移動して右クリックし、[プロパティ] をクリックします。
Microsoft.Cpp.Win32.user プロパティ ページに入る
一般プロパティ - VC++ ディレクトリ - インクルード ディレクトリ (cmake コンパイル パスに従って) を追加します。
F:\opencv\opencv\mybuild\install\include\opencv2
F:\opencv\opencv\mybuild\install\include\opencv
F:\opencv\opencv\mybuild\install\include
- lib ディレクトリを追加し、一般プロパティ - VC++ ディレクトリ - ライブラリ ディレクトリに追加します (cmake コンパイル パスに従って)。
F:\opencv\opencv\mybuild\install\x86\vc14\staticlib
F:\opencv\opencv\mybuild\install\x86\vc14\lib
4. 依存関係を追加し、「一般プロパティ」-「リンカー」-「入力」-「追加の依存関係」に追加します。
opencv_aruco3410d.lib
opencv_bgsegm3410d.lib
opencv_bioinspired3410d.lib
opencv_calib3d3410d.lib
opencv_ccalib3410d.lib
opencv_core3410d.lib
opencv_datasets3410d.lib
opencv_dnn_objdetect3410d.lib
opencv_dnn3410d.lib
opencv_dpm3410d.lib
opencv_face3410d.lib
opencv_features2d3410d.lib
opencv_flann3410d.lib
opencv_fuzzy3410d.lib
opencv_hfs3410d.lib
opencv_highgui3410d.lib
opencv_img_hash3410d.lib
opencv_imgcodecs3410d.lib
opencv_imgproc3410d.lib
opencv_line_descriptor3410d.lib
opencv_ml3410d.lib
opencv_objdetect3410d.lib
opencv_optflow3410d.lib
opencv_phase_unwrapping3410d.lib
opencv_photo3410d.lib
opencv_plot3410d.lib
opencv_reg3410d.lib
opencv_rgbd3410d.lib
opencv_saliency3410d.lib
opencv_shape3410d.lib
opencv_stereo3410d.lib
opencv_stitching3410d.lib
opencv_structed_light3410d.lib
opencv_superres3410d.lib
opencv_surface_matching3410d.lib
opencv_text3410d.lib
opencv_tracking3410d.lib
opencv_video3410d.lib
opencv_videoio3410d.lib
opencv_videostab3410d.lib
opencv_xfeatures2d3410d.lib
opencv_ximgproc3410d.lib
opencv_xobjdetect3410d.lib
opencv_xphoto3410d.lib
各バージョンで対応する依存関係が異なりますので、以下の方法でリンクライブラリリストwin+rを取得し、cmdを入力し、以下の内容を入力してください
この時点で、対応するパスを開くと、このフォルダーにすべてのリンク ライブラリ名を保存する追加の 0.txt ファイルがあります。
注: 必ず 0.txt を削除してください。そうしないと、後のものに影響します。0.txt ファイルには、さらに 0.txt、OpenCVConfig.cmake、OpenCVConfig-version.cmake、OpenCVModules.cmake、OpenCVModules-debug.cmake が存在します。コピーする これらの冗長なコンテンツを忘れずに削除してください。
テスト
ここまでで、opencv の設定が完了し、テストできるようになりました。
#include <stdio.h>
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/xfeatures2d.hpp>
名前空間cvを使用します。
名前空間stdを使用します。
int main()
{
Mat img_1 = imread( "1.jpg" , CV_LOAD_IMAGE_COLOR );
Mat img_2 = imread( "2.jpg" , CV_LOAD_IMAGE_COLOR );
Ptr <Feature2D> sift = xfeatures2d:: SIFT :: create();
ベクトル< KeyPoint > keypoints_1、keypoints_2;
マット記述子_1、記述子_2;
sift -> detectAndCompute(img_1, noArray(), keypoints_1, descriptors_1);
sift -> detectAndCompute(img_2, noArray(), keypoints_2, descriptors_2);
//特徴点(キーポイント)を描画します
drawKeypoints(img_1, keypoints_1, descriptors_1,スカラー(0, 0, 255));
drawKeypoints(img_2, keypoints_2, descriptors_2, Scalar ::all(-1), DrawMatchesFlags :: DRAW_RICH_KEYPOINTS );
imshow( "img_1" , descriptors_1);
imshow( "img_2" , descriptors_2);
waitKey(0);
0を返します。
}
参考:
https://www.pianshen.com/article/4494291443/
https://blog.csdn.net/star_of_science/article/details/104406819
https://blog.csdn.net/liijiquan1009/article/details/106162042
セレス構成
https://blog.csdn.net/wzheng92/article/details/79504709
ceres の構成については、このブロガーが非常に明確に説明しています。彼の手順に従ってください。