#include <QCoreApplication>
#include <qdebug.h>
#include "cv.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
FILE *fpr = fopen("data_batch_1.bin","rb");//打开cifar-10的一个文件
if(fpr==NULL)
{
qDebug()<<"文件打开失败!";
fclose(fpr);
return 0;
}
int labelr(0);//存label
char buffer = 0;//缓存
int yrow = 100;//行图片数
int xcol = 100;//列图片数
Mat image(32*yrow,32*xcol,CV_8UC3,Scalar::all(0));//opencv 的Mat对象,用来存图片的像素矩阵
//重点是这个循环
for(int y = 0;y<=yrow-1;y++)//循环行图片
{
for(int x = 0;x<=xcol-1;x++)//列图片
{
fread(&labelr,sizeof(char),1,fpr);//获取每张图片前的label 不要忘记了
qDebug()<<"label:"<<labelr<<endl;
for(int b = 2;b>=0;b--)//循环RGB颜色
{
for(int j = 32*y;j<32*(y+1);j++)//循环行像素
{
for(int i = 32*x;i<32*(x+1);i++)//循环列像素
{
fread(&buffer,sizeof(char),1,fpr);
image.at<Vec3b>(j,i)[b] = buffer;//用at来获取数据 ,还有其他办法,大家可以找找
}
}
}
}
}
fclose(fpr);
imshow("1",image);//显示图片
waitKey(0);//据说没有这个就不能显示图片 没研究><!
return a.exec();
}
这是25x25的效果(10000张20M太大上传不了):
参考资料:
http://blog.csdn.net/yhl_leo/article/details/50782792 Demo
http://blog.csdn.net/augusdi/article/details/8876459 Mat详解
第一次写 请多多包涵