資源簡介
模仿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!“?<}
void?BinaryDataSet::convertMat2Bin(cv::Mat?&?image?int?label?FILE?*&?fp)
{
/*
param
iamge: 圖片向量(一維)
label: 標簽
fp: 二進制文件指針
*/
cout?<“標簽:?“?< fwrite(&label?sizeof(char)?1?fp); //將標簽寫入文件
int?pixeCount?=?image.rows*?image.cols; //計算圖片像素個數
char?*pData?=?(char*)image.data;
/*以下開始將像素值寫入文件*/
for?(int?i?=?0;?i? fwrite(&pData[i?*?3]?sizeof(char)?1?fp); //寫入圖片的R通道
for?(int?i?=?0;?i? fwrite(&pData[i?*?3+1]?sizeof(char)?1?fp); //寫入圖片的G通道
for?(int?i?=?0;?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“?< 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數據集格式制作自己的數據集代碼\
- 上一篇:Vue版 Web后臺頁面模板
- 下一篇:讀取mnist數據集并保存成圖片代碼
評論
共有 條評論