我已经安装了Darknet,我可以从命令行运行它来执行各种任务,例如:
System.IO.File.Copy(filePath, "\\\\" + printerIP + "\\" + printerName);
这将使用./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg
中指定的网络架构训练分类器CIFAR数据。
好的,但是如何在我自己的C项目中使用Darknet?例如,我想在我自己的代码中调用cfg/cifar_small.cfg
中声明的load_network()
,train_network()
,save_weights()
和network_predict()
。
我可以将Darknet用作静态或共享库吗?我没有在网站上看到有关如何执行此操作的任何说明。
到目前为止,我唯一的方法是以examples文件夹中的示例样式创建自己的源文件,并修改darknet.h
,darknet.h
和darknet.c
以给自己一个入口点我可以从命令行调用,类似于我上面发布的分类器示例。但这并不理想,因为我想拥有自己的项目结构。
答案 0 :(得分:1)
好的,似乎Makefile支持生成共享库和静态库,并且在运行安装时默认生成这些库:
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
之后libdarknet.a
和libdarknet.so
出现在我的黑暗主题中。
所以我可以在我自己的项目中#include darknet.h
,然后通过以下方式编译:
gcc -Wall -o myprog main.c -ldarknet
答案 1 :(得分:1)
对于那些对细节感兴趣的人以及使用CMakeLists.txt的人,以下是要点,假设Darkned已编译:
# Path to Darknet project folder.
set(DARKNET_PATH /home/<custom_path_to>/darknet)
# Give a custom name to shared library which is provided by Darkned when
# the one compiled.
set(DARKNET_LIB_NAME libdarknet)
# Link Darknet library' include folder.
include_directories(${DARKNET_PATH}/include)
# Define Darknet library' shared library.
add_library(${DARKNET_LIB_NAME} SHARED IMPORTED)
# Set a path to Darknet library' shared library
set_property(
TARGET ${DARKNET_LIB_NAME}
PROPERTY IMPORTED_LOCATION
"${DARKNET_PATH}/libdarknet.so"
)
# Link all libraries together.
target_link_libraries(${PROJ_NAME} ${DARKNET_LIB_NAME})
下一个链接提供了使用Darknet库的项目: