dlib android教程,适用于Android的Python的配方dlib

frompythonforandroid.recipeimportCppCompiledComponentsPythonRecipeimportshfromos.pathimportjoinfrommultiprocessingimportcpu_countfrompythonforandroid.loggerimportshprintfrompythonforandroid.utilimportcurrent_directoryclassDlibRecipe(CppCompiledComponentsPythonRecipe):site_packages_name='dlib'version='19.17'url='http://dlib.net/files/dlib-{version}.zip'depends=['opencv','numpy']call_hostpython_via_targetpython=Falsedefget_lib_dir(self,arch):returnjoin(self.get_build_dir(arch.arch),'build','lib',arch.arch)defget_recipe_env(self,arch):env=super(DlibRecipe,self).get_recipe_env(arch)env['ANDROID_NDK']=self.ctx.ndk_dir

env['ANDROID_SDK']=self.ctx.sdk_dirreturnenvdefbuild_arch(self,arch):build_dir=join(self.get_build_dir(arch.arch),'build')shprint(sh.mkdir,'-p',build_dir)withcurrent_directory(build_dir):env=self.get_recipe_env(arch)python_major=self.ctx.python_recipe.version[0]python_include_root=self.ctx.python_recipe.include_root(arch.arch)python_site_packages=self.ctx.get_site_packages_dir()python_link_root=self.ctx.python_recipe.link_root(arch.arch)python_link_version=self.ctx.python_recipe.major_minor_version_stringif'python3'inself.ctx.python_recipe.name:python_link_version+='m'python_library=join(python_link_root,'libpython{}.so'.format(python_link_version))python_include_numpy=join(python_site_packages,'numpy','core','include')python_include_opencv=join(python_site_packages,'opencv','core','include')shprint(sh.cmake,'-DP4A=ON','-DANDROID_ABI={}'.format(arch.arch),'-DANDROID_STANDALONE_TOOLCHAIN={}'.format(self.ctx.ndk_dir),'-DANDROID_NATIVE_API_LEVEL={}'.format(self.ctx.ndk_api),'-DANDROID_EXECUTABLE={}/tools/android'.format(env['ANDROID_SDK']),'-DCMAKE_TOOLCHAIN_FILE={}'.format(join(self.ctx.ndk_dir,'build','cmake','android.toolchain.cmake')),# Make the linkage with our python library, otherwise we# will get dlopen error when trying to import dlib's module.'-DCMAKE_SHARED_LINKER_FLAGS=-L{path} -lpython{version}'.format(path=python_link_root,version=python_link_version),'-DBUILD_WITH_STANDALONE_TOOLCHAIN=ON',# Force to build as shared libraries the dlib's dependant# libs or we will not be able to link with our python'-DBUILD_SHARED_LIBS=OFF','-DBUILD_STATIC_LIBS=ON',# Disable some dlib's features'-DBUILD_dlib_java=OFF','-DBUILD_dlib_java_bindings_generator=OFF',# '-DBUILD_dlib_highgui=OFF',# '-DBUILD_dlib_imgproc=OFF',# '-DBUILD_dlib_flann=OFF','-DBUILD_TESTS=OFF','-DBUILD_PERF_TESTS=OFF','-DENABLE_TESTING=OFF','-DBUILD_EXAMPLES=OFF','-DBUILD_ANDROID_EXAMPLES=OFF',# Force to only build our version of python'-DBUILD_DLIB_PYTHON{major}=ON'.format(major=python_major),'-DBUILD_DLIB_PYTHON{major}=OFF'.format(major='2'ifpython_major=='3'else'3'),# Force to install the `dlib.so` library directly into# python's site packages (otherwise the dlib's loader fails# on finding the dlib.so library)'-DDLIB_SKIP_PYTHON_LOADER=OFF','-DDLIB_PYTHON{major}_INSTALL_PATH={site_packages}'.format(major=python_major,site_packages=python_site_packages),# Define python's paths for: exe, lib, includes, numpy...'-DPYTHON_DEFAULT_EXECUTABLE={}'.format(self.ctx.hostpython),'-DPYTHON{major}_EXECUTABLE={host_python}'.format(major=python_major,host_python=self.ctx.hostpython),'-DPYTHON{major}_INCLUDE_PATH={include_path}'.format(major=python_major,include_path=python_include_root),'-DPYTHON{major}_LIBRARIES={python_lib}'.format(major=python_major,python_lib=python_library),'-DPYTHON{major}_NUMPY_INCLUDE_DIRS={numpy_include}'.format(major=python_major,numpy_include=python_include_numpy),'-DPYTHON{major}_PACKAGES_PATH={site_packages}'.format(major=python_major,site_packages=python_site_packages),self.get_build_dir(arch.arch),_env=env)# Install python bindings (dlib.so)shprint(sh.cmake,'-DCOMPONENT=python','-P','./cmake_install.cmake')# Copy third party shared libs that we need in our final apk#sh.cp('-a', sh.glob('./lib/{}/lib*.so'.format(arch.arch)),# self.ctx.get_libs_dir(arch.arch))recipe=DlibRecipe()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值