将编译完成的 libandroid_tensorflow_inference_java.jar 和 armeabi-v7a/libtensorflow_inference.so文件拉到项目libs文件夹内
修改CMakeLists.txt //不添加,添加后会无法进行c++编程
add_library(tensorflow SHARED IMPORTED ) set_target_properties( tensorflow PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtensorflow_inference.so )
修改build.gradle
externalNativeBuild { cmake { cppFlags "" abiFilters 'armeabi-v7a' } } sourceSets { main { jniLibs.srcDirs = ['libs'] } }
tensorflow 官方demo的文件拉到项目
添加权限
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.front" android:required="false"/> <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
activity
<activity android:name=".ClassifierActivity" android:screenOrientation="portrait"/> <activity android:name=".DetectorActivity" android:screenOrientation="portrait"/>
MainActivity内调用就可以预览了
public void onClassifier(View view){ Intent intent = new Intent(this,ClassifierActivity.class); startActivity(intent); } public void onDetector(View view){ Intent intent = new Intent(this,DetectorActivity.class); startActivity(intent); }
就这样把源码拉进自己的项目
模型下载
ssd_mobilenet_v1_android_export.pb
将下载的模型拉到assets文件夹
模型下载链接在TensorFlow源码的WORKSPACE内,不过没有graph-tiny-yolo-voc.pb
2017/10/10更新
加入tensorflow后不能进行jni编程,不然报各种错误
删除CMakeLists.txt的以下代码
add_library(tensorflow SHARED IMPORTED ) set_target_properties( tensorflow PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtensorflow_inference.so )在java代码中添加
static { System.loadLibrary("native-lib"); System.loadLibrary("tensorflow_inference"); }这样就又可以愉快的用c++编程了
我自己在jdk1.8环境编译tensorflow的arm64-v8a,armeabi,armeabi-v7a,x86,x86_64的so文件和jar包
链接: https://pan.baidu.com/s/1nuQ4UpF 密码: hust