如何跑通論文上提供的代碼(Real-Time Human Detection Using Contour Cues)

以下文章屬原創,如有雷同請通知我,有錯誤的地方請大牛批評指正。

 

本人在研究計算機視覺的時候,在讚歎作者的奇妙構想之餘,會去尋找相應的源代碼,源代碼可以在論文或者作者的網頁中找到,然而跑通作者的代碼卻不是一件容易的事情,今天分享一下本人跑通一篇基於傳統方法的行人檢測代碼的全過程,或許能給各位帶來些許啓示。

 

文章:Real-Time Human Detection Using Contour Cues

代碼名稱:Pedestrian_ICRA

 

得到代碼之後,第一時間是查看作者提供的README文件,如下所示:

上圖畫黃色部分就是我們要重點關注的地方,這些地方說明,這段代碼可以在ubuntu環境下用系統自帶的g++跑,並且需要OPENCV的支持,滿足這兩個條件,就可以在終端輸入make得到detect程序,接下來運行detect程序即可。

這段文字看上去很簡單,ubuntu系統+opencv環境,但事實上在配環境和運行所花的時間比想象的要多得多。

爲什麼?因爲作者所用的操作系統版本,軟件版本以及很多複雜的庫等等都可能與你目前的配置完全不同,這時候貿然的去CSDN找g++,make,opencv等的配置方法可能會浪費很多時間。所以我們可以先在文章的Experimence部分看看作者有沒有介紹相關的配置信息,下圖是另外一篇文章的截圖,截圖是作者對配置的詳細介紹:

因此,我們也來看看,這篇行人檢測有沒有提供配置指南,如下圖:

很可惜,作者沒有提供關於ubuntu系統的版本和opencv的版本,甚至說,裏面提供的配置信息非常有限,基本都是在描述自己提出c4特徵的性能,所以我們爲了節省時間,還有一個辦法,我們發現,代碼裏面提供了ubuntu版本和window版本,我們在window版本里面可以發現這麼一條信息:

黃色的這句話的意思是說:我使用的是opencv2.2的版本,那麼如果想節省時間的話,那麼在window系統下配合opencv2.2就可以了。

 

但是如果用window跑opencv的話得配合VS使用,作者沒有提供VS的具體配置,這可能就更麻煩了,爲了不這麼麻煩,硬着頭皮用ubuntu系統跑可不可以呢?

其實也是可以的,首先我們可以根據我們的ubuntu系統尋找合適的opencv安裝包,比如我的ubuntu系統是16.0.4,64位,那麼我就可以在網站下載相應的包,這裏提供OPENCV以及opencv_contrib的下載地址:

opencv源碼下載地址:
https://github.com/opencv/opencv/releases
contrib源碼下載地址:
https://github.com/opencv/opencv_contrib/releases

具體的安裝過程很多博客上面都有,這裏分享一篇比較靠譜的博客:

https://blog.csdn.net/ksws0292756/article/details/79511170(寫的比較詳細,比較適合我的系統)

 

重點:

現在我們終於滿足了作者的要求,但是由於我們的操作系統和OPENCV版本都不是作者使用的,所以可能會遇到各種各樣的問題,下面簡單講一下我遇到的問題及解決辦法。

最初遇到的是這個問題,我很納悶我的opencv已經安裝好了,爲何會找不到cxtypes.h,這時搜索網上的辦法會讓你安裝這個文件,但是這個文件不是這麼好找的,又來發現cxtypes.h是在opencv低版本中出現的,高版本的opencv已經用其他文件包含了cxtypes.h裏面的代碼,那我們只要在源代碼中刪去就可以了,然而我們查看了各種cpp和h文件,裏面並沒有包含這個庫,這種時候我們可以藉助強大的sublime文件幫我們找出來,如下圖所示:

對着文件夾(不要對着裏面的文件)點擊右鍵,點擊在文件夾中查找,輸入cxtypes,就找到了結果

,原來在隱藏文件.deps裏面,這樣我們只要在根目錄按Ctrl+h讓隱藏文件現形,然後將裏面多餘的語句刪去就可以了。

然後又出現了第二個問題,在輸入make按回車後,出現了下面的情況:

這個錯誤產生的原因是鏈路不匹配,也就是調用opencv的時候,不能找到opencv裏面這些封裝好的函數,但是配置路徑讓文件夾指向opencv實在是比較麻煩,我們可以看到終端裏面有這麼一句話:

我們都知道,makefile文件其實就是代替了我們手動打這些指令的過程,很明顯,makefile文件在代替我們輸入上述指令的時候跑不通,那麼我們只要在終端手動打這段話(複製粘貼),然後加上鍊接opencv的指令即可,也就是在在pkg-config 和--libs之間加入--cflags就可以了,最後我們可以得到程序detect了,但是這還沒完,只完成了一半而已,一般來說,這種時候如果我們輸入./detect,往往一個結果也沒有,這時候就需要深入瞭解主代碼的結構了,如下圖所示:

這段代碼是說,我們得自己新建一個名爲video2的文件夾,並且把圖片放進去纔行,不過這都是小問題,在得到程序之後,記得查看一下main.cpp函數裏面的主函數,這個函數往往是整份代碼的第二個README文件。

那麼就先分享到這裏,哪裏說的不對請各位CV大神批評指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章