• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: cifar  

资源简介

模仿CIFAR数据集格式制作自己的数据集代码(修改版)

资源截图

代码片段和文件信息

#include “BinaryDataSet.h“
#include
#include 
using namespace cv;
using namespace std;

vector BinaryDataSet::getFileLists(string file_folder)
{
/*
param
file_folder: 文件夹路径
*/
file_folder += “/*.*“;
const char *mystr = file_folder.c_str();
vector flist;
string lineStr;
vector extendName; //设置文件扩展名
extendName.push_back(“JPG“);
extendName.push_back(“jpg“);
extendName.push_back(“bmp“);
extendName.push_back(“png“);
extendName.push_back(“tiff“);

HANDLE file;
WIN32_FIND_DATA fileData;
char line[1024];
wchar_t fn[1000];
mbstowcs(fn mystr 999);
file = FindFirstFile(fn &fileData);
FindNextFile(file &fileData);
while (FindNextFile(file &fileData))
{
wcstombs(line (const wchar_t*)fileData.cFileName 259);
lineStr = line;
// remove the files which are not images
for (int i = 0; i < 4; i++)
{
if (lineStr.find(extendName[i]) < 999)
{
flist.push_back(lineStr);
break;
}
}
}
return flist;
}

/*
从文件的绝对路径当中得到文件名
例如:“C:\\Users\\lyf\\Desktop\\test.bin“,返回“test.bin“
*/
string BinaryDataSet::getFileName(string & filename)
{
/*
param
filename: 文件的绝对路径
*/
int iBeginIndex = filename.find_last_of(“\\“) + 1;
int iEndIndex = filename.length();

return filename.substr(iBeginIndex iEndIndex - iBeginIndex);

cout << “Done!“ << endl;
}

void BinaryDataSet::convertMat2Bin(cv::Mat & image int label FILE *& fp)
{
/*
param
iamge: 图片向量(一维)
label: 标签
fp: 二进制文件指针
*/
cout << “标签: “ << label << endl;
fwrite(&label sizeof(char) 1 fp); //将标签写入文件

int pixeCount = image.rows* image.cols; //计算图片像素个数
char *pData = (char*)image.data;
/*以下开始将像素值写入文件*/
for (int i = 0; i < pixeCount; i++)
fwrite(&pData[i * 3] sizeof(char) 1 fp); //写入图片的R通道
for (int i = 0; i < pixeCount; i++)
fwrite(&pData[i * 3+1] sizeof(char) 1 fp); //写入图片的G通道
for (int i = 0; i < pixeCount; i++)
fwrite(&pData[i * 3+2] sizeof(char) 1 fp); //写入图片的B通道
}

/*读取图片并变形为一维向量*/
void BinaryDataSet::mat2Binary(string & image_file int label FILE *&fp)
{
/*
param
image_file: 文件的路径及名称
label: 标签
fp: 二进制文件指针
*/
Mat image = imread(image_file IMREAD_UNCHANGED); //读取图片内容并存入image中
if (!image.data)
cout << “Image“ << getFileName(image_file) << “ load failed!“ << endl;
else
{
if (image.channels() != 3) //通道转换,将不是彩色图像的转换为彩色图像
cv::cvtColor(image image CV_BGR2RGB);

Mat image_reshaped;
cv::resize(image image_reshaped cv::Size(_iWidth _iHeight) CV_INTER_LINEAR); //将图片转换为以为向量

convertMat2Bin(image_reshaped label fp); //将一维向量的图片写入二进制文件
}
}

void BinaryDataSet::images2Binaryfiles(string filefolder vector& img_List vector& img_Labels string filename)
{
/*
param
filefolder: 图片所在的文件夹路径
img_List: 文件名列表
img_Labels: 标签列表
filename: 二进制文件保存路径
*/
const int size_list = img_List.siz

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5350  2017-07-21 12:00  模仿CIFAR数据集格式制作自己的数据集代码\BinaryDataSet.cpp
     文件         949  2017-07-20 21:54  模仿CIFAR数据集格式制作自己的数据集代码\BinaryDataSet.h
     文件         823  2017-07-21 12:04  模仿CIFAR数据集格式制作自己的数据集代码\Main.cpp
     文件         402  2017-07-21 12:17  模仿CIFAR数据集格式制作自己的数据集代码\readme.txt
     目录           0  2017-07-21 12:07  模仿CIFAR数据集格式制作自己的数据集代码\

评论

共有 条评论