5. 使用sophon-mw开发

在安装完sophon-mw后,用户可以用两种方式将sophon-mw的库链接到自己的编译程序中。

** 如果使用Make编译系统 **

推荐用户使用pkgconfig来寻找sophon-mw库。

在之前的安装中,我们已经将sophon-mw的pkgconfig路径加入到环境变量PKG_CONFIG_PATH。因此,用户可以在Makefile中添加如下语句:

CFLAGS   = -std=c++11

# add libsophon dependency because sophon-ffmpeg rely on it
CFLAGS  += -I/opt/sophon/libsophon-current/include/
LDFLAGS += -L/opt/sophon/libsophon-current/lib -lbmcv -lbmlib -lbmvideo -lbmvpuapi -lbmvpulite -lbmjpuapi -lbmjpulite -lbmion

# add sophon-ffmpeg
CFLAGS  += $(shell pkg-config --cflags libavcodec libavformat libavfilter libavutil libswscale)
LDFLAGS += $(shell pkg-config --libs libavcodec libavformat libavfilter libavutil libswscale)

# add sophon-opencv
CFLAGS  += $(shell pkg-config --cflags opencv4)
LDFLAGS += $(shell pkg-config --libs opencv4)

然后就可以在Makefile中使用sophon-ffmpeg和sophon-opencv的库。

注意:当系统在/usr/lib或者/usr/local/lib下还安装了另一份ffmpeg或者opencv的时候,要注意检查下,是否搜索到了正确的sophon-ffmpeg/sophon-opencv路径。 如果搜索不正确,则需要显式地指定头文件位置和库文件位置

** 如果使用CMake编译系统 **

用户可以在CMakeLists.txt中添加如下语句:

# add libsophon
find_package(libsophon REQUIRED)
include_directories(${LIBSOPHON_INCLUDE_DIRS})
link_directories(${LIBSOPHON_LIB_DIRS})

# add sophon-ffmpeg
set(FFMPEG_DIR        /opt/sophon/sophon-ffmpeg-latest/lib/cmake)
find_package(FFMPEG REQUIRED NO_DEFAULT_PATH)
include_directories(${FFMPEG_INCLUDE_DIRS})
link_directories(${FFMPEG_LIB_DIRS})

# add sophon-opencv
set(OpenCV_DIR /opt/sophon/sophon-opencv-latest/lib/cmake/opencv4)
find_package(OpenCV REQUIRED NO_DEFAULT_PATH)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(${YOUR_TARGET_NAME} ${YOUR_SOURCE_FILES})

target_link_libraries(${YOUR_TARGET_NAME} ${FFMPEG_LIBS} ${OpenCV_LIBS})

在用户的代码中即可以调用sophon-ffmpeg和sophon-opencv中的函数:

#include <opencv2/opencv.hpp>

int main(int argc, char const *argv[])
{
    cv::Mat img = cv::imread(argv[1]);

    return 0;
}