opencv_contrib モジュールのコンパイルとインストール

序文

opencv_contrib モジュールのインストールは opencv 基本モジュールに依存しているため、このチュートリアルを読む前に、以前のOpenCV 基本モジュールのインストール チュートリアルを読んでください。

ダウンロード

opencv_contribモジュールをダウンロードします(中国のgitcode でダウンロードできる opencv 基本モジュールのバージョン番号 4.6.0 と同じである必要があります)

設定、コンパイル、インストール

cmake-gui を開き、[ OpenCV 基本モジュール] (contrib モジュールではない)のソース コード パスを選択し、新しいコンパイル出力パスを選択してbuild/contrib、[configure] をクリックして終了を待ちます。
ここに画像の説明を挿入

完了後、[基本モジュールの構成で] 引き続き次の構成を設定します。

  1. contrib モジュールのパスを設定しますxxxx/opencv_contrib-4.6.0/modules(モジュールが含まれている必要があることに注意してください)
    画像-20230513163704147

  2. 不自由なチェック (特許取得済みのアルゴリズムの使用を許可)
    画像-20230513163853739

もう一度「構成」をクリックして待ちますが、このとき、さまざまなものが再度ダウンロードされ、予期せぬことが起こらないと再び赤色で報告されるため、次に手動でダウンロードする必要があります。[ダウンロード方法については、記事の最後を参照してください - 赤のソリューションを構成する]

ダウンロードして名前を変更し、対応するフォルダーに配置した後、次の手順を順番に実行します。

  1. 「構成」をクリックして、「生成」をクリックします。
  2. cmake-guiを閉じて、build/contribディレクトリ
  3. cmd にコマンドを入力してコンパイルmingw32-make -j7を開始します(通常は 30 分以上かかります)

コンパイルが完了したら、コマンドmingw32-make installを(.dll含まれている bin ディレクトリが環境変数に追加されることに注意してください)。

レポートレッドソリューションを構成する

方法 1. 手動ダウンロード

build/contribディレクトリに入り、[CMakeDownloadLog.txt] ファイルを開き、「cmake_download」を含むすべての行を見つけて、後で比較してダウンロードできるように、それらを個別のファイルにコピーします。

好き:

#cmake_download "D:/xxxx/opencv460/opencv/sources/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i"
# 第2个链接是文件下载位置,第1个链接则是下载文件并重命名后保存的位置

各ダウンロード リンクについてraw.githubusercontent.comraw.staticdn.netダウンロードする前にすべてを に変更します。

ダウンロードが完了したら、最初のリンクの説明に従って、名前を変更して指定の場所に保存します。

方法 2. 自動的にダウンロードする Python スクリプトを作成する

[添付ファイル]: 不足しているファイルを自動的にダウンロードするための Python スクリプトを作成しました。Python とリクエスト ライブラリをインストールしている方は、このスクリプトを使用してダウンロードできます (ファイルが大きいので、ご自身でダウンロードしてください).dat

import requests
import os


def getItemUrls(fpath):
    items = []
    with open(fpath, 'r') as f:
        lines = f.readlines()
        for line in lines:
            if('cmake_download' in line):
                line = line.strip().replace('"', '')
                linfo = line.split()
                fileSavePath = linfo[1]
                url = linfo[2].replace(
                    'raw.githubusercontent.com', 'raw.staticdn.net')
                item = dict(file=fileSavePath, url=url)
                items.append(item)
    return items


def save(savepath, content):
    with open(savepath, 'wb') as f:
        f.write(content)


print('请输入 CMakeDownloadLog.txt 的文件路径',
      r'比如D:\opencv\sources\build\release\CMakeDownloadLog.txt', sep='\n')
fp = input(': ')

items = getItemUrls(fp)

for i in range(len(items)):
    item = items[i]
    if(item["url"][-3:] == "dat"):
        print(f"i={
      
      i} --> 文件过大,请自行前往{
      
      item['url']}\n并保存为 {
      
      item['file']}")
        continue
    os.makedirs('/'.join(item['file'].split('/')[:-1]), exist_ok=True)
    try:
        r = requests.get(item['url'], timeout=20)
    except:
        print(f"i={
      
      i} --> 下载失败,请自行前往{
      
      item['url']}\n并保存为 {
      
      item['file']}")
        continue
    save(item['file'], r.content)
    print(f'i={
      
      i} --> 已下载')
    
print("【下载结束】")

おすすめ

転載: blog.csdn.net/m0_46079750/article/details/130660446