存储、读取二进制的图像
2016-04-04 21:07
288 查看
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "cv.h"
#include "highgui.h"
using namespace cv;
using namespace std;
void main(){
FILE *fpw = fopen("E:\\patch.bin","wb");
if(fpw == NULL){
cout<<"Open error!"<<endl;
fclose(fpw);
return;
}
Mat image = imread("E:\\lena32.jpg");
if(!image.data || image.channels() != 3){
cout<<"Image read failed or image channels isn't equal to 3."<<endl;
return;
}
//write image to binary format file
int labelw = 1;
int rows = image.rows;
int cols = image.cols;
fwrite(&labelw,sizeof(char),1,fpw);
char *dp = (char*)image.data;
for(int i=0;i<rows*cols;i++){
fwrite(&dp[i*3],sizeof(char),1,fpw);
fwrite(&dp[i*3+1],sizeof(char),1,fpw);
fwrite(&dp[i*3+2],sizeof(char),1,fpw);
}
fclose(fpw);
//read image from binary format file
FILE *fpr = fopen("E:\\patch.bin","rb");
if(fpr == NULL){
cout<<"Open error!"<<endl;
fclose(fpr);
return;
}
int labelr(0);
fread(&labelr,sizeof(char),1,fpr);
cout<<"label: "<<labelr<<endl;
Mat image2(rows,cols,CV_8UC3,Scalar::all(0));
char *pData = (char*)image2.data;
for(int i=0;i<rows*cols;i++){
fread(&pData[i*3],sizeof(char),1,fpr);
fread(&pData[i*3+1],sizeof(char),1,fpr);
fread(&pData[i*3+2],sizeof(char),1,fpr);
}
fclose(fpr);
imshow("1",image2);
waitKey(0);
}
#include <stdio.h>
#include <stdlib.h>
#include "cv.h"
#include "highgui.h"
using namespace cv;
using namespace std;
void main(){
FILE *fpw = fopen("E:\\patch.bin","wb");
if(fpw == NULL){
cout<<"Open error!"<<endl;
fclose(fpw);
return;
}
Mat image = imread("E:\\lena32.jpg");
if(!image.data || image.channels() != 3){
cout<<"Image read failed or image channels isn't equal to 3."<<endl;
return;
}
//write image to binary format file
int labelw = 1;
int rows = image.rows;
int cols = image.cols;
fwrite(&labelw,sizeof(char),1,fpw);
char *dp = (char*)image.data;
for(int i=0;i<rows*cols;i++){
fwrite(&dp[i*3],sizeof(char),1,fpw);
fwrite(&dp[i*3+1],sizeof(char),1,fpw);
fwrite(&dp[i*3+2],sizeof(char),1,fpw);
}
fclose(fpw);
//read image from binary format file
FILE *fpr = fopen("E:\\patch.bin","rb");
if(fpr == NULL){
cout<<"Open error!"<<endl;
fclose(fpr);
return;
}
int labelr(0);
fread(&labelr,sizeof(char),1,fpr);
cout<<"label: "<<labelr<<endl;
Mat image2(rows,cols,CV_8UC3,Scalar::all(0));
char *pData = (char*)image2.data;
for(int i=0;i<rows*cols;i++){
fread(&pData[i*3],sizeof(char),1,fpr);
fread(&pData[i*3+1],sizeof(char),1,fpr);
fread(&pData[i*3+2],sizeof(char),1,fpr);
}
fclose(fpr);
imshow("1",image2);
waitKey(0);
}
相关文章推荐
- Oracle常用语句语法汇总
- Oracle常用语句语法汇总
- Oracle常用语句语法汇总
- 在ubuntu安装Phabricator(转)
- 二维数组求最大子数组的和(连通性)
- Netty 3.x 简例
- python文件拷贝工具shutil介绍
- POJ 3368 Frequent values(线段树/RMQ)
- 《ZooKeeper》 Chapter 1 Introduction
- HTML5 之 基本标签、属性
- UltraISO制作U盘启动盘安装Win7系统攻略
- 查看mysql当前表使用的存储引擎(转)
- [LeetCode] Subsets II
- js事件
- uva 10245 The Closest Pair Problem
- codeforces #305 C Mike and Foam
- Kylin cuboid算法修改
- python文件取MD5
- linux tail命令的使用方法详解
- 矩阵快速幂