win10+vs2013+opencv 3.1编译darknet YOLOv3 采坑记录

2023-12-24 19:48

本文主要是介绍win10+vs2013+opencv 3.1编译darknet YOLOv3 采坑记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网上教程很多,推荐https://blog.csdn.net/maweifei/article/details/81150489这篇博客讲的很详细,基本按照这个流程没有问题。

但是每个人的电脑环境都不同,我的环境:

win10 x64位,vs2013,opencv contrib 3.10版本,显卡GTX1060,cuda版本10.1,cudnn版本7.5

我在此记录下遇到的一些问题:

1、首先用vs编译c文件会出现一些语法错误,比如xxx没有声明,不明确的定义...之类的,举个例子

这个问题我查到的原因是,要将变量的声明放在函数的最开头,不能放在其他语句之后。就像这里的

#ifdef GPU
    if(gpu_index >= 0) return train_network_datum_gpu(net, x, y);
#endif

这一部分就放在了network_state state;声明之前了,解决办法如下:

还有其他类似的变量声明问题也可以按这个办法解决。

2、darknet是用C语言写的,里面有关于二进制操作的语句:

就像这里的0b1,表示二进制1,在c++中好像没有这种直接表示二进制的写法,所以会报错, 我这里的解决办法是,直接将2进制转成10进制,也可以进行&操作。

如果是0b1111就转成15即可。报错是没有了,这么操作不知道会不会有什么不好的结果。

3、关于im2col_kernel.cu文件中报的各种错误,直接忽略,可以编译成功。

4、关于std::min和std::max报错,在预处理器定义中加入NOMINMAX即可。

其他的一些问题我这里就不记录了,百度一下基本就可以找到。

编译成功之后就会在下面的文件夹下生成darknet.exe。此外我也试着编译生成了darknet_no_gpu.exe,这个配置比较简单,不用配置cuda什么的。

后续会在c++中调用编译好的YOLOv3模型。

这篇关于win10+vs2013+opencv 3.1编译darknet YOLOv3 采坑记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532921

相关文章

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2