raw格式(裸数据)格式文件读写

raw格式文件为裸数据,包含了相机原图像文件在图像传感器产生后计入相机图像处理器之前的一切图像信息。

从硬盘中读取raw格式文件存入opencv的图像容器中

	CString strPath= dlg.GetPathName();

	CFile file;

	file.Open(strPath,CFile::modeRead|CFile::typeBinary);

	file.SeekToBegin();
	
	BYTE * pfilebuf=new BYTE[m_width*m_hight*2] ;//相机采图分辨率

	if (m_width*m_hight*2!= file.Read(pfilebuf,m_width*m_hight*2)  )
	{  
		//提示文件读取错误  
		file.Close();  
		return;
	}  

	file.Close();  
	CvMat* mat_a = cvCreateMat(1, m_width*m_hight, CV_16U);

	int i=0;  

	do {  
		unsigned  short int a=0xffff;
		BYTE b = pfilebuf[i*2];
		BYTE c = pfilebuf[i*2+1];

		a= (c<<8)|b;

		CV_MAT_ELEM(*mat_a,unsigned short int, 0, i) =a; 

		i++;  
	}while(i<m_width*m_hight);  

	delete[] pfilebuf; 

	cvReshape(mat_a, mat_a, 0,m_hight);
	
	IplImage* img_a = cvCreateImage(cvSize(m_width,m_hight), IPL_DEPTH_16U, 1);

	cvCvtColor(mat_a, img_a, CV_BayerBG2GRAY); 
	
	/*cvNamedWindow("raw");
	cvShowImage("raw",img_a);*/
	image=img_a;
	
	//cvReleaseImage(&img_a);
	cvReleaseMat(&mat_a);
	}
将处理后的16位图像数据保存文raw格式文件

    errno_t err1;  
    FILE *pfile;
   err1=fopen_s(&pfile,"D:\\ceshiraw.raw","wb");
			
   unsigned short int* pBes=NULL ;//指向类型的指针	
   pBes = new unsigned short int[img16.rows*img16.cols];   //处理图像的指针
   memcpy(pBes,img16.data,img16.rows*img16.cols*2);
   if (pfile)
   {
	fwrite(pBes, sizeof(unsigned short)*img16.rows*img16.cols, 1, pfile);
			
   }
  fclose(pfile);

  delete [] pBes;
  pBes=NULL;



  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值