發表文章

影像分割:cv::grabCut

圖片
OpenCV提供另一個grabCut影像分割演算法,計算方式較watershed更複雜, 但結果比較精確,如果想要從 靜態 影像提取前景物體,像是將一幅影像中的物體剪貼到另一幅圖中, 這是最佳算法。   void grabCut(InputArray img, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount, int mode=GC_EVAL)                                  #img:  輸入圖,8位元3通道。 #mask:  輸出圖,8位元單通道圖。 #           輸出圖mask每個像素為以下四個標誌之一: #           1. GC_BGD: 確定為後景 #           2. GC_FGD: 確定為前景 #           3. GC_PR_BGD: 可能為後景 #           4. GC_PR_FGD: 可能為前景 #rect:  輸入矩形,在這之外的像素全都是背景,只有mode參數是GC_INIT_WITH_RECT時才有效。 #bgdmodel:  背景模型,供演算法內部使用。(提供演算法後景資訊) #fgdmodel:  前景模型,供演算法內部使用。(提供演算法前景資訊) #interCount:  迭代次數。 #mode:  處理模式。 #           模式有三種選擇: #         ...

Caffe 環境建置(問題集)

圖片
Q1: 於Ubuntu 14.04,編譯Caffe遇到“Detected version of Boost is too old. Requested version was 1.55”的錯誤。   A1: 由於Ubuntu 14.04系統中安裝libboost-all-dev時所選擇的Boost版本為晝,但在Caffe(CAFFE_TAG=1.0)中,需要Boost高於1.55,因此clone Caffe時,不特別指定CAFFE_TAG=1.0即可。 git clone -b ${CAFFE_TAG} --depth 1 https://github.com/BVLC/caffe.git   Q2: 執行Caffe遇到cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (1 vs. 0) CUDNN_STATUS_NOT_INITIALIZED的錯誤。   A2: 可能為cuda與cudnn版本衝突所造成。 找到問題(執行check指令): root@49ee0d654821:~/caffe# dpkg -l | grep cud   輸出(cuda8? cuda9?):   找到原因apt-get upgrade,更新了cudnn所造成。   可以利用apt-mark鎖定package不更新。 apt-mark hold libcudnn7 libcudnn7-dev      

OpenCV 臉部識別 範例程式 (VS2010)

圖片
1. 安裝OpenCV 2.4.3~2.4.5其中一版 環境變數新增 變數名稱:PATH 變數值:E:\opencv_win \opencv\build\x86\vc10\bin 2.開啟VS2010 2.1. 新建專案:        檔案  >  新增專案  >  Visual C++  >  Win32 Console Application        輸入專案名稱  >  選擇位置  >  確定       Application Setting:                 Application Type:Console application                Additional options:Empty project 2.2. 放入範例原始碼:        新增cpp檔案                   Visual C++ > C++ File > 輸入名稱  >  新增         cpp內容為OpenCV官方提供的範例。         Face Recongition from Videos  ...

將OpenTLD(已先行下載)導入Visual Stdio 2012

圖片
(Opencv & OpenTLD 已下載) 1. 新增系統變數: (對應opencv的位置) 2. 安裝CMaker(路徑中沒有空白為佳) http://www.cmake.org/cmake/resources/software.html 自動新增系統變數 3. 開啟VS2012 x64 Cross Tools Command Prompt 移動到OpenTLD-master目錄下(cd 指令) 執行指令 mkdir build cd build cmake ../src/ 4. 成功後,開啟Visual Studio 2012 開啟OpenTLD專案(可以在剛剛建立的build目錄下找到sln檔案) 5. 編譯發現錯誤&修改: 修改一: PatchGenerator 非cv member錯誤: 標頭加入#include <opencv2/legacy/legacy.hpp> 修改二: 沒有round函式要改成cvRound 修改三: 使用了VS不支持的動態陣列宣告 float L[c-1]; //Level not support int nodes[c-1][2]; not support int belongs[c]; not support 修改為 float *L = new float [c-1]; int **nodes = new int *[c-1]; int *belongs = new int [c]; && printf("\n"); delete []nodes; nodes = NULL; delete [] belongs; belongs = NULL; 6. 依序build ZERO_CHECK ferNN LKTracker tld_utils tld run_tld 7. 將run_tld設為”Set as StarUp Project” 即可執行 目前會有 bad_alloc at memory location Exception 的錯誤