2013-04-02 20 views
7

ios için opencv2.framework boyutunu azaltmaya çalışıyorum. Projem sadece çekirdek, imgproc ve highgui modüllerini kullanıyor. Sadece bu modülleri nasıl derleyebilirim? ya da boyutu azaltmak için bir alternatif var mı?Opencv Özel Derleme

Teşekkürler.

cevap

1

Sadece modüller klasöründen modülleri silin ve satırları başlık dosyasındaki satırları kaldırın. Ve derleyin. Bunu yapmadan önce bağımlılıklar için CMakeLists.txt dosyasını okuyun. Örneğin, highgui modülü için; v2.4.6 OpenCV itibariyle

ocv_define_module(imgproc opencv_core) 
2

sadece özel bir hale getirmek için cmake hattında bayrakları eklemeniz gerekir

eser (plateforms> ios> build_framework.py) kolaylaştırmak için özel bir python komut dosyası vardır derlemek.

Örneğin:

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) 

olarak lib çekirdek ve dünyayı eklemek unutmayın: Sadece lib imgproc ve arşiv tüm başlıkları içerecek şekilde gerekli, benim cmake şimdi bu ressembles zorunludurlar. Python betiğini çalıştırın> kar edin.

Bundan sonra lib'i projenize manuel olarak ekleyin ve başlıklar> opencv.hpp içinde kalan sinir bozucu içe aktarma başlıklarını kaldırın ve gitmekte fayda var demektir!

1

Şu anda bu sürüm 3.1 sürümü ile karşılaştım ve nebuto'nun yanıtı yakın, ancak şu anda tamamlanmadı. Aşağıdaki, build_framework.py dosyasını güncelleyerek istenen sonucu üretebildi.

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 

Bu güncelleştirme ayrıca, 2.4.6 sürümünde bulunmayan iki yeni modül içermektedir.

Bazı ek tasarruflar için, muhtemelen dosyanın altında bulunan simülatör yapıları için i386 ayarlarını kaldırabilirsiniz. Uygulamanız iOS 9 ve üzerindeyse ve 32 bit cihaz kullanmayı ihmal ederseniz, armv7 seçeneğini de kullanabilirsiniz.

b = Builder(args.opencv, args.contrib, 
    [ 
     ("armv7", "iPhoneOS"), 
     ("armv7s", "iPhoneOS"), 
     ("arm64", "iPhoneOS"), 
     #("i386", "iPhoneSimulator"), 
     ("x86_64", "iPhoneSimulator"), 
    ]) 
b.build(args.out)