part zero:

如何处理.raw格式数据,读取和转化

matlab读取raw图 (mark读取图片尺寸和位数均可设置,图片尺寸M,N,图片数据类型8bit,16bit改成uint16)

clear;
clc;
close all;
%
% rotpath = imread('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_dst_rotate90.raw'); %%1280*800 8bit
% mesh(nv_rot);
% path= imread('C:\Users\Administrator\Desktop\nv21_test_dst_rotate90.raw'); %%1280*800 8bit [filename, pathname] = uigetfile('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_dst_rotate90.raw', '读入图像');
f1 = fopen([pathname, filename], 'r');
data = fread(f1, 'uint8');
fclose(f1);
len = length(data);
k = len/(1280*800);
image = reshape(data, 800, 1280, k);
mesh(image);[filename2, pathname2] = uigetfile('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_src.raw', '读入图像');
f2 = fopen([pathname2, filename2], 'r');
data2 = fread(f2, 'uint8');
fclose(f2);
len2 = length(data2);
k2 = len2/(1280*800);
image2 = reshape(data, 800, 1280, k2);
figure(2);
mesh(image2);image_diff = image2-image;
figure(3);
mesh(image_diff);

raw图像(本文是raw8),opencv的imread不支持直接读入,但可以通过c++的ifstream读入。

注意的一点是,读取时,mode要设置成std::ios::binary,即把raw图像当做二进制文件读入。

读取后,构造opencv mat,并显示出来,代码如下:

   // open raw dataconst std::string file_path = "/home/zhangshan/image/image.raw";std::ifstream fin;// 注意,这里要指定binary读取模式fin.open(file_path,  std::ios::binary);if (!fin) {std::cerr << "open failed: " << file_path << std::endl;}// seek函数会把标记移动到输入流的结尾fin.seekg(0, fin.end);// tell会告知整个输入流(从开头到标记)的字节数量int length = fin.tellg();// 再把标记移动到流的开始位置fin.seekg(0, fin.beg);std::cout << "file length: " << length << std::endl;// load bufferchar* buffer = new char [length];// read函数读取(拷贝)流中的length各字节到bufferfin.read(buffer, length);// construct opencv mat and show imagecv::Mat image(cv::Size(1280, 800), CV_8UC1, buffer);cv::imshow("test", image);cv::waitKey();

part one:

raw格式图片是相机拍摄并记录下来的带有原始信息的视频或者图片,包含传感器元数据、传感器尺寸、颜色属性、配置文件等等信息,以方便后期对视频及图片做更大幅度的处理。几乎未经压缩,也完全没进行各种处理,与记录拍摄时“用户的相机设置信息”数据被一同保存下来。既然是原始文件,一定很大,对传输带宽、存储空间都有特别的要求,而且每个摄像机、照相机厂家对自己的原始文件(RAW)开放程度、记录方式等要求都不一样。

参考:https://zhuanlan.zhihu.com/p/129055040

part two:

不同图片格式的区别

part three:

mipi raw与raw区别

part four:

  uint8_t* speckle;cv::Mat speckle_image;if (speckle_file_extern == ".raw") {speckle = new uint8_t[kInWidth_g * kInHeight_g];ASSERT_NE(speckle, nullptr);FILE* fp = fopen(imagesPath.speckle_Path_.c_str(), "rb");ASSERT_NE(fp, nullptr);fread(speckle, 1, kInWidth_g * kInHeight_g, fp);fclose(fp);} else if (speckle_file_extern == ".bmp") {cv::Mat speckle_image_t = cv::imread(imagesPath.speckle_Path_, cv::IMREAD_ANYDEPTH);ASSERT_FALSE(speckle_image_t.empty());speckle_image = speckle_image_t.clone();speckle = speckle_image.data;}delete[] out_depth;if (ir_file_extern == ".raw")delete[] ir;if (speckle_file_extern == ".raw")delete[] speckle;

part five:

raw 参考blog:

[1]https://blog.csdn.net/qq_42261630/article/details/102922737

ISP【三】———— raw读取、不同格式图片差异相关推荐

  1. C语言读取BMP格式图片

    C语言读取BMP格式图片 BMP 维基百科,自由的百科全书 汉漢▼ 位图 扩展名 .bmp 开发者 Microsoft 格式 图像文件格式  本文介绍的是一种图像文件格式. 关于Unicode的第1区 ...

  2. c语言实现pdf显示图片,C语言读取BMP格式图片.pdf

    C语言读取BMP格式图片 C 语言读取BMP 格式图片 以下摘自维基百科,自由的百科全书 BMP 取自位图BitMaP 的缩写,也称为DIB (与设备无关的位图)是微软视窗图形 子系统(Graphic ...

  3. Halcon读取jpg格式图片失败的处理方法

    halcon读取jpg格式图片时,抛异常.最先想到的方法是用windows的画图软件或者PicPix软件将jpg格式的图片另存为BMP格式,但图片数量较多,这种方法不可取. 如下的方法,利用Graph ...

  4. GDAL库三个读取Jpeg2000格式驱动测试

    0.目的 GDAL库中提供了四五种读取Jpeg2000的驱动,但是各个驱动读取数据的效率各不相同,下面就针对三种读取jpeg2000的效率进行测试. GDAL库中提供的读取Jpeg2000的驱动有下面 ...

  5. linux下通过C语言读取BMP格式图片,在文本终端显示该图片

    第一步:打开需要读取的图片文件 fd = open(picture, O_RDONLY): //只读方式打开文件 第二步:读取图片的长,宽,每个像素占多少字节,偏移量 查看bmp格式就能知道各个数据两 ...

  6. ImageIO.read(inputStream)读取.webp格式图片报错

    0.码仙励志 莫妒他长,妒长,则己终是短.莫护己短,护短,则己终不长. 1.问题描述 今天测试提了一个新bug,查找原因是因为测试上传了一张.webp格式的图片. 在代码运行到 javax.image ...

  7. C++读取bmp格式图片

    类的格式按照bmp的文件头.信息头.调色板和数据域写好即可 因为图片是按字节读的,所以要强制让编译器不对结构体进行字节对齐,否则会出错 因为bmp格式规定存储时每行的像素数要补齐至4的整数倍,所以读入 ...

  8. verilog读取bmp格式图片

    代码如下: `timescale 1 ns/1 ns module test_t; integer fileId, cc,out_file,i; reg [7:0] bmp_data [0:20000 ...

  9. tensorflow读取jpg格式图片报错 ValueError: Only know how to handle extensions: ['png']; with Pillow installed

    当运行mpimg.imread("img.jpg")时,spyder 出现如下错误: ValueError: Only know how to handle extensions: ...

最新文章

  1. mysql 子sql中调用存储过程_mysql 子sql中调用存储过程
  2. Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04
  3. IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
  4. java beetl 视频_04.Beetl常用内置函数以及安全输出---《Beetl视频课程》
  5. ffmpeg前景_5G时代音视频开发前景怎么样?音视频开发需要掌握哪些技术?
  6. mysql的本地id可以随便设置马_Mysql主从复制原理及搭建
  7. Windows任务栏实现动态自动隐藏并透明
  8. 【FXCG】如何成功启动SWOT分析法
  9. 210917-电脑护眼模式总结
  10. 本学期在实验室的收获
  11. 自然语言处理实战——巧用 Amazon Comprehend 分析社交媒体数据
  12. 抖音短视频买的粉丝是真的吗?多少人懂这点
  13. 使用Nightwatch.js做基于浏览器的web应用自动测试
  14. Vue Props是什么
  15. 2021年移动开发者未来的出路在哪里,年薪50W
  16. 电脑检测软件列表及电脑硬件驱动大全
  17. 王道论坛机试指南学习笔记(五)搜索
  18. java计算机毕业设计课外创新实践学分认定管理系统源码+数据库+lw文档+系统
  19. HTML5 网页端年会抽奖源码,导入名单列表即可使用
  20. carla创建地图(三)基于cityengine创建地图

热门文章

  1. linux mysql 无法识别,Linux下MySQL 5.7.23无法远程连接解决方案
  2. 【C++】何时需要自定义拷贝构造函数和赋值符
  3. Linux进程间的通信----->共享内存
  4. oracle中的聚簇,Oracle数据库的聚簇技术
  5. OpenCV中的光流及视频特征点追踪
  6. C语言:十六进制(HEX)和浮点类型(float、double)转换
  7. 物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析
  8. NanodetPlus网络结构
  9. 计算机刷新的作用,图文详解Win8重置和刷新功能:超强自我治愈
  10. 【只需三步】用IDEA打开一个新的jsp项目如何跑起来(运行起来)