10

iOS の opencv2.framework サイズを削減しようとしています。core、imgproc、および highgui モジュールのみを使用する私のプロジェクト。それらのモジュールのみでコンパイルするにはどうすればよいですか? または、サイズを縮小するための代替手段はありますか?

ありがとう。

4

4 に答える 4

5

バージョン3.1でこの問題に遭遇しました.nebutoの答えは近いですが、現時点では完全ではありません. 以下は、build_framework.py ファイルを更新することで、目的の結果を生成することができました。

def getCMakeArgs(self, arch, target):
    args = [
        "cmake",
        "-GXcode",
        "-DBUILD_SHARED_LIBS=OFF",
        "-DBUILD_opencv_core=ON",
        "-DBUILD_opencv_imgcodecs=OFF",
        "-DBUILD_opencv_imgproc=ON",
        "-DBUILD_opencv_world=OFF",
        "-DBUILD_opencv_gpu=OFF",
        "-DBUILD_opencv_calib3d=OFF",
        "-DBUILD_opencv_contrib=OFF",
        "-DBUILD_opencv_features2D=OFF",
        "-DBUILD_opencv_flann=OFF",
        "-DBUILD_opencv_highgui=ON",
        "-DBUILD_opencv_legacy=OFF",
        "-DBUILD_opencv_ml=OFF",
        "-DBUILD_opencv_nonfree=OFF",
        "-DBUILD_opencv_objdetect=OFF",
        "-DBUILD_opencv_photo=OFF",
        "-DBUILD_opencv_stitching=OFF",
        "-DBUILD_opencv_video=OFF",
        "-DBUILD_opencv_videoio=OFF",
        "-DBUILD_opencv_videostab=OFF",
        "-DAPPLE_FRAMEWORK=ON",
        "-DCMAKE_INSTALL_PREFIX=install",
        "-DCMAKE_BUILD_TYPE=Release",
    ]
    return args

このアップデートには、2.4.6 には存在しなかったと思われる 2 つの新しいモジュールも含まれています。

さらに節約するために、ファイルの下部にあるシミュレーター ビルドの i386 設定を削除することもできます。アプリが iOS 9 以降で、32 ビット デバイスを省略したい場合は、armv7 オプションも削除できます。

b = Builder(args.opencv, args.contrib,
    [
        ("armv7", "iPhoneOS"),
        ("armv7s", "iPhoneOS"),
        ("arm64", "iPhoneOS"),
        #("i386", "iPhoneSimulator"),
        ("x86_64", "iPhoneSimulator"),
    ])
b.build(args.out)
于 2016-05-06T20:51:18.600 に答える
2

v2.4.6 の時点で、OpenCV には作業を容易にするカスタム python スクリプトがあります (platforms > ios > build_framework.py)

カスタム コンパイルを行うには、cmake 行にフラグを追加するだけです。

例: lib imgproc のみが必要で、すべてのヘッダーをアーカイブに含めるために、私の cmake はこれに似ています:

cmakeargs = ("-GXcode " +
            "-D BUILD_SHARED_LIBS=OFF "+
            "-D BUILD_opencv_core=ON "+
            "-D BUILD_opencv_imgproc=ON "+
            "-D BUILD_opencv_world=ON "+
            "-D BUILD_opencv_gpu=OFF "+
            "-D BUILD_opencv_calib3d=OFF "+
            "-D BUILD_opencv_contrib=OFF "+
            "-D BUILD_opencv_features2D=OFF "+
            "-D BUILD_opencv_flann=OFF "+
            "-D BUILD_opencv_highgui=OFF "+
            "-D BUILD_opencv_legacy=OFF "+
            "-D BUILD_opencv_ml=OFF "+
            "-D BUILD_opencv_nonfree=OFF "+
            "-D BUILD_opencv_objdetect=OFF "+
            "-D BUILD_opencv_photo=OFF "+
            "-D BUILD_opencv_stitching=OFF "+
            "-D BUILD_opencv_video=OFF "+
            "-D BUILD_opencv_videostab=OFF "+
            "-DCMAKE_BUILD_TYPE=Release " +
            "-DCMAKE_TOOLCHAIN_FILE=%s/platforms/ios/cmake/Toolchains/Toolchain-%s_Xcode.cmake " +
            "-DCMAKE_INSTALL_PREFIX=install") % (srcroot, target)

core と world libは必須なので忘れずに追加してください。Python スクリプトを実行 > Profite.

その後、ライブラリを手動でプロジェクトに追加し、ヘッダーに残っている厄介なインポートヘッダーを削除します> opencv.hppで、準備完了です!

于 2014-06-11T09:23:06.573 に答える