1. 程式人生 > >不需要安裝OpenCV Manager,就可以執行openCV的APP

不需要安裝OpenCV Manager,就可以執行openCV的APP

.實現Static Initialization實現Static Initialization就是指將OpenCV Library新增到app package中,不需要安裝OpenCV Manager這個app就能執行,官方文件有介紹,但是不詳細,尤其是最後那句程式碼到底要放在什麼地方很多人都不清楚,其實並不需要像官方文件中介紹的那樣配置,我想在這裡介紹下如何修改FaceDetection專案的原始碼來做到這點。(最好是找一個包含jni程式碼的專案進行修改)
  • [1]開啟jni下的Android.mk檔案,修改OpenCV的那一部分,將off設定為on,並設定OpenCV_LIB_TYPE為SHARED,結果如下:
  • OpenCV_CAMERA_MODULES:=on
    OpenCV_INSTALL_MODULES:=on
    OpenCV_LIB_TYPE:=SHARED
    include ${OpenCVROOT}/sdk/native/jni/OpenCV.mk
[2]開啟FdActivity.java檔案,在oncreate()上面新增一個靜態初始化塊程式碼,它是用來載入OpenCV_java庫的,由於FaceDetection中還用了另一個庫detection_based_tracker,所以要在else子句中載入進來:
static {
  Log.i(TAG, "OpenCV library load!");
  if (!OpenCVLoader.initDebug()) {

      Log.i(TAG, "OpenCV load not successfully");
  } else {
      System.loadLibrary("detection_based_tracker");// load other libraries
  }
}

[3]刪除FdActivity.java的OnResume()方法的最後那句,不讓它去訪問OpenCV Manager。
@Override
public void onResume() {
  super.onResume();
//OpenCVLoader.initAsync(OpenCVLoader.OpenCV_VERSION_2_4_3, this, mLoaderCallback);//

}
[4]修改FdActivity.java的OnCreate()方法,從上面的private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this)程式碼塊中拷貝try-catch塊放到OnCreate的setContentView()之後,然後拷貝mOpenCVCameraView.enableView();放到mOpenCVCameraView = (CameraBridgeViewBase) findViewById(R.id.fd_activity_surface_view);之後,修改後的OnCreate()方法如下:
public void onCreate(Bundle savedInstanceState) {
  Log.i(TAG, "called onCreate");
  super.onCreate(savedInstanceState);
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

  setContentView(R.layout.face_detect_surface_view);

  //
  try {
      // load cascade file from application resources
      InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface);
      File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
      mCascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml");
      FileOutputStream os = new FileOutputStream(mCascadeFile);

      byte[] buffer = new byte[4096];
      int bytesRead;
      while ((bytesRead = is.read(buffer)) != -1) {
          os.write(buffer, 0, bytesRead);
      }
      is.close();
      os.close();

      mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());
      if (mJavaDetector.empty()) {
          Log.e(TAG, "Failed to load cascade classifier");
          mJavaDetector = null;
      } else
          Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath());

      mNativeDetector = new DetectionBasedTracker(mCascadeFile.getAbsolutePath(), 0);// hujiawei

      cascadeDir.delete();

  } catch (IOException e) {
      e.printStackTrace();
      Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
  }

  //

  mOpenCVCameraView = (CameraBridgeViewBase) findViewById(R.id.fd_activity_surface_view);
  mOpenCVCameraView.enableView();//
  mOpenCVCameraView.setCvCameraViewListener(this);
}

  • [5]OK,解除安裝安裝好的OpenCV Manager,然後重新除錯執行FaceDetection試試,它已經可以自行運行了!

相關推薦

需要安裝OpenCV Manager可以執行openCV的APP

.實現Static Initialization實現Static Initialization就是指將OpenCV Library新增到app package中,不需要安裝OpenCV Manager這個app就能執行,官方文件有介紹,但是不詳細,尤其是最後那句程式碼到底

Android Studio使用OpenCV使APP安裝OpenCV Manager即可執行

採用靜態初始化的方法,可以戳下邊的連結檢視官方的文件介紹 http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#applic

delphi安裝pngimage控件需要安裝只需引用

-- ons div 菜單 -c home 文件夾 class alt delphi7的pngimage控件如何安裝 20 解壓後的安裝包如圖所示,求高人指點如何把它安到delphi7上,感激不盡 在路徑裏面引用你這個文件夾菜單--tools---library然

需要安裝任何開發環境在瀏覽器裡面能線上練習31種程式語言

如果有一天心血來潮,想試試和看看新的語言如何使用,總不可能每個開發環境都裝一套吧,而且有的開發環境還不太好裝,而且必須在特定的裝置下面才能使用,比如蘋果(Apple)公司的Swift語言. 就有下面的程式語言: Asm BCPL Bash C (clan

AndroidStudio OpenCv的配置不用安裝opencv manager

finish gem sdk manage jnilibs tar div sel elf 參考網址:http://jingyan.baidu.com/article/60ccbceb53533364cab197db.html 按照以下操作步驟配置並測試了,沒問題。

Android Studio安裝opencv manager配置

1)將OpenCV-android-sdk\samples\image-manipulations\res中的三個檔案(如圖所示),拷貝到你的安卓專案Opencvtest\app\src\main\res下(拷貝前先將此目錄下的同名的三個檔案刪掉) 2)將OpenCV-android-sdk\samp

pip怎麼安裝到使用者目錄(需要管理員許可權)怎樣安裝指定python版本的包

1、pip怎麼安裝到使用者目錄(不需要管理員許可權) 在使用者的Home目錄底下有個.pip目錄,即~/.pip,在這裡面新建一個pip.conf, 裡面寫上 [install] install-option=--prefix=~/.local 然後再pip install

exe4j使用教程1--這個需要安裝jdk也可以執行

exe4j是一款很經典的將Java類檔案打包成.exe檔案的軟體,支援把jar class檔案等編譯成windows下能夠直接執行的exe檔案,還可以新增啟動等待畫面 第一次安裝時會出現下面的對話方塊: 它要求系統有1.5版本以上的JDK,點Download線上下載

LINUX下PHP編譯添加相應的動態擴展模塊so(需要重新編譯PHP以openssl.so為例)

down get 階段 很多 習慣 lin 模塊 臨時 操作 本文轉自:原文鏈接 http://www.cnblogs.com/doseoer/p/4367536.html 網上我看到有很多相關的文章都是簡述這個問題的,但畢竟因為LINUX版本眾多,很多LIUNX命令或路

普通交換機需要任何設置能設置

鏈路 b- 通路 其他 text crt 節點 需要 服務器 普通交換機不需要任何設置,也不能設置。網管型交換機,需要用console調試線,通過CRT等調試軟件進入交換機設置。TP-LINK一般為普通交換機,不用設置,進線一般插第一口,出線隨便插就能用。交換機(Switc

xcode-select --install 安裝該軟體因為目前不可在軟體伺服器上使用它

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

用exe4j 將Java專案做成需要安裝jdk的安裝

最近寫了一個圖書管理系統想將他做成一個安裝包在其他任何電腦上都能執行,找了一些資料,經過一番試錯後終於每次都能打包成功了,下面是製作過程。 圖書管理系統的介面,有興趣的可以看看,附原始碼 0、首先下載一個exe4j和Inno Setup編譯器 百度exe4j下載,下載後壓縮包裡有

C# 除錯技巧 跳過想除錯的程式碼執行除錯)

當你使用F11進行dubug工作時,經常會進入到一些不想進入的property或method內部。比如有下面的程式碼:     public string Word     {         get ;         set ;     } 並且你

[Mac OS]您需要安裝舊 Java SE 6 執行環境才能開啟“Eclipse-inst”。

問題 Mac OS下已經安裝了Oracle的JDK 1.8版本,點選安裝Eclipse-Installer報錯。 您需要安裝舊 Java SE 6 執行環境才能開啟“Eclipse-inst”。 解決辦法 右鍵Eclipse-Installer 顯示包內容,找

懂得賺錢的流程能輕鬆的賺錢

今天想說的其實不是真的賺不到錢,而是為什麼不能輕鬆賺到錢。 打工賺錢是最普通的方式,也是比較穩定的方式,只要幹了就有錢發,乾的好了就能多發。 但是,做為一個普通的打工者,收入其實還是少的,已經無法面對現在消費變化了。 只有不滿足的人,才會想著從其它渠道增加收入,

安裝了anaconda需要安裝cuda和cudnn!

我電腦i7 1060,之前一直在找匹配的cuda和cudnn,安裝出現各種問題,直到高人提醒,anaconda自帶cuda和cudnn。 我開啟開始選單裡的anaconda裡的navigator,發現cuda和cudnn狀態是installed,cuda版本是9.0,執行測

原始碼安裝opencvC++正常引用python出現ImportError

ubuntu 18.0.4 原始碼安裝 opencv 解決 No module named ‘cv’ 解決方法:通過pip安裝 pip3 install opencv-python 如果出現下面的錯誤 ImportError Traceback (most

xcode-select --install 安裝該軟體因為目前不可在軟體伺服器上使用它

                     執行命令 xcode-select –install,安裝失敗,提示  “不能安裝該軟體,因為目前不可在軟體伺服器上使用它”can’t install the software because it is not currently available from th

Mac OS 您需要安裝舊 Java SE 6 執行環境才能開啟 XXX 問題

                     Mac OS 您需要安裝舊 Java SE 6 執行環境才能開啟“XXX” 問題問題描述:今天在Mac OS上安裝一個app的時候提示 “您需要安裝舊 Java SE 6 執行環境才能開啟 XXX” ,在網上搜索了一下,有說要改app的info.plist檔案的,將其

在Windows 中配置Oracle ODBC驅動(需要安裝客戶端)

用於測試的作業系統:Win7 64X Oracle ODBC驅動版本:11.02.00.04 安裝配置步驟: (1)解壓instantclient_12.rar檔案到任意位置(我的示例:G:\oracle odbc\instantclient_12\instantc