最近找工作叫我笔试处理raw的图像文件,然后把图像保存成视频,简单记录一下C++的打开方式吧
#include "stdafx.h"
#include "Read_Raw.h"
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include<iostream>
#include<fstream>
using namespace std;
using namespace cv;
Read_Raw::Read_Raw()
{
}
Read_Raw::~Read_Raw()
{
}
cv::Mat Read_Raw::R_Read(cv::String imageName)
{
FILE *filePointer;
fopen_s(&filePointer, imageName.c_str(), "rb+");
if (filePointer == NULL)
{
std::cout << "Can not open the raw data!\n";
return cv::Mat();
}
int data[4];
fread(data,2,8, filePointer);
int Width = data[0];
int Height = data[1];
int Depth = data[2];
int pixelsz = data[3];
cout << data[0] << endl;
cout << data[1] << endl;
cout << data[2] << endl;
cout << data[3] << endl;
cv::Mat rawData(512, 640, CV_16UC1, cv::Scalar(0));
if (pixelsz == 1)
{
cv::Mat rawData(Height, Width, CV_8UC1, cv::Scalar(0));
for (int i = 0; i < Height; i++)
{
uchar *pointer = rawData.ptr<uchar>(i);
fread(pointer, 1, Width, filePointer);
}
fclose(filePointer);
return rawData;
}
else
{
for (int i = 0; i < 512; i++)
{
uint *pointer = rawData.ptr<uint>(i);
fread(pointer, 2, 640, filePointer);
}
fclose(filePointer);
return rawData;
}
}