iOS の opencv2.framework サイズを削減しようとしています。core、imgproc、および highgui モジュールのみを使用する私のプロジェクト。それらのモジュールのみでコンパイルするにはどうすればよいですか? または、サイズを縮小するための代替手段はありますか?
ありがとう。
バージョン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)
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で、準備完了です!