1. 程式人生 > >VS2013+OpenCV3.0編譯CMT跟蹤演算法

VS2013+OpenCV3.0編譯CMT跟蹤演算法

這個演算法的全稱是Clustering of Static-Adaptive Correspondences for Deformable Object Tracking,文章發表在CVPR2015上,官方的網址為: http://www.gnebehay.com/cmt/ 這個作者就是OpenTLD的C++版本的作者,包括ROS版的OpenTLD也是基於他的程式碼改的。

-1. 下載原始碼,並且解壓,我是解壓到F盤根目錄的。F:\CppMT-master -2. 開啟裡面的fastcluster.cpp後,找到heapify()函式,修改成下面:

  void heapify() {
    // Arrange the indices I and R so that H[i] := A[I[i]] satisfies the heap
// condition H[i] < H[2*i+1] and H[i] < H[2*i+2] for each i. // // Complexity: Θ(size) // Reference: Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms, // 3rd ed., 2009, Section 6.3 “Building a heap” // t_index idx; 註釋這裡 int_fast32_t idx;//新增這句 for (idx=(size>>1
); idx>0; ) { --idx; update_geq_(idx); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

-3. 在F盤根目錄下新建一個BuildCppMT資料夾,用來存放適合VS2013工程檔案。 -4. 下載最新的CMake工具,https://cmake.org/download/ 我自己用的是CMake 3.4.0 RC -5. 安裝OpenCV,必須是2.4.8以上,我用的是3.0,最新版本3.1是不行的,個人覺得因為裡面沒有x86的庫,如果你自己編譯x86庫就可能可以。因為OpenCV官網不翻牆是上不了的,所以我還是給出3.0的下載連結https://yunpan.cn/cqF2Eps8WApZS

訪問密碼 7df9 -6. 安裝完OpenCV後,新增環境變數,下面的路徑自己靈活變通,不要全抄。

在path環境變數裡面新增:D:\OpenCV3.0\opencv\build\x86\vc12\bin
新建一個OpenCV_DIR變數,值為:D:\OpenCV3.0\opencv\build
  • 1
  • 2

-7. 開啟CMake,然後配置如下圖:

這裡寫圖片描述

-8.點選Configure,選擇VS2013編譯器後,點選Finish,然後再點選一下Configure。如下圖:

這裡寫圖片描述

-9. 點選Generate生成工程檔案。 -10. 用VS2013開啟BuildCppMT檔案裡面的CMT.sln工程。在這裡我們可以看到四種生成配置,四種生成配置最後都會生成cmt.lib靜態庫,記得是靜態庫,其實這四種四種生成配置實現的效果都是一樣的,只是有的是為帶輸出除錯的lib檔案,有的是體積比較小的lib檔案,所以你可以只編譯Release就行了,下面就為每一種生成配置都單獨編譯一次。

這裡寫圖片描述

  1. 選擇Debug版本的配置。開啟cmt工程的屬性頁面,按照圖片設定:

這裡寫圖片描述

然後點選[生成]-[生成解決方案],大概幾十秒就看到資料夾裡面有一個Debug的目錄,裡面就有cmt.lib檔案。

這裡寫圖片描述

  1. 選擇MinSizeRel生成配置,同樣來到cmt的屬性頁裡面,修改執行庫為/MTd,然後跟第一種編譯方式一樣。
  2. 選擇Release生成配置,來到cmt的屬性頁面裡面,修改執行庫為/MT,然後編譯。
  3. 選擇RelWithDebInfo生成配置,來到cmt的屬性頁面裡面,同樣修改執行庫為/MTd,然後編譯。

-11.編譯完成後就看到裡面有四個資料夾對應四種生成。

這裡寫圖片描述

這時候可以試試執行裡面的cmt.exe這個demo,因為博主見不了人就不截圖了~~~