convert_imageset.exe的生成

本文记录了在Caffe环境下编译并使用convert_imageset工具的过程,包括解决编译错误的方法及对工具用途的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

也不知道是不是自己太愚钝,所有由convert_imageset.cpp生成convert_imageset.exe的就一句话带过,而且还用了半个上午的时间。

弄完以后看看确实不难,但是思路却是很重要的。自己走入了莫大的误区。

首先是误区总结:尝试把convert_imageset.cpp单独生成

受到网上资料的误导,尝试着去单独编译cpp文件,自然报了无数的错,主要是include各类文件找不到。可不是吗!本身就应该在Caffe环境内编译生成的文件怎么可能单独拿出来跑。事实上,convert_imageset.cpp和caffe.cpp是一样的,两个都包含main入口,所以只需要把caffe删掉,换成convert_imageset就可以在caffe环境中跑了,而不需要为了跑起来这个cpp单独配无数个文件。

需要讲明白的是,convert_imageset本身是一个工具,这个工具和caffe.cpp地位是一样的,他的作用是将图片转为lmdb格式,传给caffe去训练。


然后,遇到了第二个小问题。编译时出现 error C3861: “snprintf”: 找不到标识符

网上搜到的解决方案

[code]在使用VSS2013编译C++程序时,当调用stdio.h库时,比如调用以下函数:

[code]会出现以下错误:
error C3861: “snprintf”:  找不到标识符

原因是:
snprintf()函数并不是标准c/c++中规定的函数,所以在许多编译器中,厂商提供了其相应的实现的版本。
在gcc中,该函数名称就snprintf(),而在VS中称为_snprintf。

解决方法(二者选其一即可):
1.将snprintf时改成_snprintf
2.在预编译处加入:
[code]#if _MSC_VER
[code]#define snprintf _snprintf
[code]#endif

总自以为是的认为这个错误是不可能有这么幼稚的解决方式,然而事实证明我又错了,在snprintf前面加一个_,一切就解决了。

目前为止还没有成功使用这个exe,下次有时间再试试。

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os from os import listdir, getcwd from os.path import join if __name__ == '__main__': source_folder='/home/nawa/catkin_ws/src/darknet_ros/darknet-master' dest='/home/nawa/catkin_ws/src/darknet_ros/darknet-master/voc/VOCdevkit/VOC2019/ImageSet/Main/train.txt' dest2='/home/nawa/catkin_ws/src/darknet_ros/darknet-master/voc/VOCdevkit/VOC2019/ImageSet/Main/val.txt' file_list=os.listdir(source_folder) #赋值图片所在文件夹的文件列表 train_file=open(dest,'a') #打开文件 val_file=open(dest2,'a') #打开文件 for file_obj in file_list: #访问文件列表中的每一个文件 file_path=os.path.join(source_folder,file_obj) #file_path保存每一个文件的完整路径 file_name,file_extend=os.path.splitext(file_obj) #file_name 保存文件的名字,file_extend保存文件扩展名 file_num=int(float(file_name)) if(file_num<620): #保留620个文件用于训练 train_file.write(file_name+'\n') #用于训练前620个的图片路径保存在train.txt里面,结尾加回车换行/生成train.txt是file_name;生成2019_train.txt是file_path else : val_file.write(file_name+'\n') #其余的文件保存在val.txt里面/生成val.txt是file_name;生成2019_val.txt是file_path train_file.close()#关闭文件 val_file.close() 我的代码报错了,报错信息如下,请帮我改进代码解决错误: File "/home/nawa/catkin_ws/src/gazebo_pkg/script/make_train_val.py", line 18, in <module> file_num=int(float(file_name) ) ValueError: could not convert string to float: 'voc'
07-09
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值