【ncnn android】算法移植(四)——ubuntu上搭建環境,測試

1. 安裝protobuf

鏈接:

  1. https://blog.csdn.net/u010918487/article/details/82947157
  2. https://blog.csdn.net/kdchxue/article/details/81046192

2. 編譯ncnn

$ cd <ncnn-root-dir>
$ mkdir -p build
$ cd build

# cmake option NCNN_VULKAN for enabling vulkan
$ cmake -DNCNN_VULKAN=OFF ..

$ make -j4
$ make install

報錯

In file included from /usr/local/include/google/protobuf/arena.h:48:0,
                 from /usr/local/include/google/protobuf/message.h:118,
                 from /usr/local/include/google/protobuf/text_format.h:48,
                 from /home/yangna/chenjun/ncnn/ncnn-20180704/tools/caffe/caffe2ncnn.cpp:26:
/usr/include/c++/5/typeinfo:39:37: error: expected ‘}’ before end of line
/usr/include/c++/5/typeinfo:39:37: error: expected unqualified-id before end of line
/usr/include/c++/5/typeinfo:39:37: error: expected ‘}’ before end of line
/usr/include/c++/5/typeinfo:39:37: error: expected ‘}’ before end of line
/usr/include/c++/5/typeinfo:39:37: error: expected ‘}’ before end of line
/usr/include/c++/5/typeinfo:39:37: error: expected declaration before end of line
tools/caffe/CMakeFiles/caffe2ncnn.dir/build.make:70: recipe for target 'tools/caffe/CMakeFiles/caffe2ncnn.dir/caffe2ncnn.cpp.o' failed
make[2]: *** [tools/caffe/CMakeFiles/caffe2ncnn.dir/caffe2ncnn.cpp.o] Error 1
CMakeFiles/Makefile2:203: recipe for target 'tools/caffe/CMakeFiles/caffe2ncnn.dir/all' failed
make[1]: *** [tools/caffe/CMakeFiles/caffe2ncnn.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

解決方案:

結果
會在build文件夾下有install/includeinstall/lib兩個文件夾,include是*.h頭文件;lib是動態鏈接庫。
在這裏插入圖片描述

3. 使用ncnn

  1. 這裏以cmakelist.txt爲例。需要在cmakelist.txt中包含<ncnn project path>/build/install/include的文件夾,引入libncnn.a庫文件。
    cmakelist.txt的關鍵部分
1. 
include_directories(/home/yangna/chenjun/ncnn/ncnn-20180704/build/install/include)					# 包含頭文件

2. 
# 項目中添加libncnn.a庫
add_library( libncnn STATIC IMPORTED )
set_target_properties(
        libncnn
        PROPERTIES IMPORTED_LOCATION
        ${DIR}/lib/libncnn.a
)

3. 鏈接
target_link_libraries(demo 
                      libncnn
                      ${OpenCV_LIBS}
					  )
  1. 這裏用centerface做測試。項目中已經有ncnn模型和相關代碼。只需要編譯通過就行。
  • 修改cmakelist.txt,只需要修改一處
#1.cmake verson
cmake_minimum_required(VERSION 2.8)

# 設置變量
set (DIR /home/yangna/chenjun/ncnn/ncnn-20180704/build/install)			# 只需要修改這一處

#2.project name
project(demo C CXX)

#opencv
find_package(OpenCV REQUIRED)

#3.set environment variable
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

#4. include
include_directories(${DIR}/include
                    ${CMAKE_CURRENT_LIST_DIR}/cpp)

# ncnn lib
add_library( libncnn STATIC IMPORTED )
set_target_properties(
        libncnn
        PROPERTIES IMPORTED_LOCATION
        ${DIR}/lib/libncnn.a
)

# add OPENMP support 
FIND_PACKAGE( OpenMP REQUIRED)
if(OPENMP_FOUND)
message("OPENMP FOUND")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()

#6.source directory
file(GLOB TEST_SRC ${CMAKE_CURRENT_LIST_DIR}/cpp/*.cpp
                   ${CMAKE_CURRENT_LIST_DIR}/demo.cpp)
set(TEST_COMPILE_CODE ${TEST_SRC})


add_executable(demo ${TEST_COMPILE_CODE})

target_link_libraries(demo 
                      libncnn
                      ${OpenCV_LIBS}
					  )
  • 編譯項目
cd $project
makedir build
cmake ..
make
  • 執行
./demo 
  • 結果
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章