環境:
Ubuntu16.04
OpenCV 3.4.0
Cmake 3.10.0
一、安裝OpenCV
請參考連結:【Linux】Ubuntu16.04安裝OpenCV3.4.0+OpenCV_contrib3.4.0+CUDA9.0完全教程。
二、安裝cmake
其實我的電腦上已經安裝了cmake,但版本是3.5.3,而ncnn要求cmake的版本最低是3.10,是以需要更新。
1. 下載下傳cmake
wget https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.tar.gz
2. 解壓
tar -xf cmake-3.10.0-Linux-x86_64.tar.gz
解壓之後有四個檔案夾。
其中bin檔案夾裡面就有cmake的可執行程式。
對于原來低版本的cmake我并沒有解除安裝,它在/usr/bin下面,我将它重命名為cmake-bak。
sudo mv cmake cmake-bak
3. 連結新版本cmake
sudo ln -sf /home/mysoftware/cmake/bin/cmake /usr/bin/cmake
檢視一下現在cmake的版本。
cmake --version
已經是3.10.0的版本了。
三、編譯ncnn
1. 克隆源碼。
git clone https://github.com/Tencent/ncnn.git
2. 修改examples/CMakeLists.txt
這裡首先修改的是examples/CMakeLists.txt,主要是針對OpenCV3,因為ncnn預設是支援opencv2,如果這裡不進行修改,直接cmake之後make會報很多opencv的undefined reference錯誤。
打開examples/CMakeLists.txt,在最上面添加
set(OpenCV_DIR /home/mysoftware/opencv/build)
這裡設定的路徑就是第一步【Linux】Ubuntu16.04安裝OpenCV3.4.0+OpenCV_contrib3.4.0+CUDA9.0完全教程中編譯OpenCV建立的build目錄,因為這裡面有OpenCVConfig.cmake檔案。
3. 修改CMakeLists.txt
現在修改根目錄下的CMakeLists.txt,将
#add_subdirectory(examples)
的注釋取消。
add_subdirectory(examples)
因為我需要編譯ncnn下的examples。
4. 編譯
mkdir -p build
cd build
cmake ..
make -j4
5. 測試
cp ../examples/squeezenet_v1.1.bin examples/
cp ../examples/squeezenet_v1.1.param examples/
cd examples
./squeezenet test.jpg
輸出
打開根目錄下examples/synset_words.txt,看一下152代表什麼,
吉娃娃,應該是差不多的。