RAW数据批量格式转换matlab脚本

RAW数据批量格式转换matlab脚本
16bit转换为12bit少四位222*2=16,以此类推

12bit-10bit 16bit-10bit

%% 批量raw图像数据转换%%%%%%%%%%%%%%%%
%% 2021/9/23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc
%%  读取raw数据 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
read_file_path  = 'd:\project\1\';%读取图像文件夹
write_file_path = 'd:\project\2\';%存储图像文件夹
write_add_fileName = '12bit ';%自己定义

rawcol=2688;
rawrow=1520;

%% %%%%
myfile = dir(strcat('read_file_path', '*.raw'));
for fi=1: length(myfile)
    myfile(fi).name
    [rfid, message]=fopen(stract(read_file_path,myfile(fi).name), 'rb');
    wfid = fopen(stract(write_file_path,myfile(fi).name, write_add_fileName), 'wb');
    %% 单个raw的数据个数%%%%
    fseek(rfid,0,'eof');
    fsize =fteel(rfid);
    %% 移动到文件头%%
    fseek(rfid, 0, 'bof');
    rawnum = fsize / rawcol /rawrow /2
    %cutnum=rawnum/3 %截取帧数
    for i = 1:rawnum
        rawdata = fread(rfid, [rawcol, rawrow], 'unit16');
        rawchange = rawdata/16;%16bit转换为12bit少四位2*2*2*2=16,以此类推
        count =fwrite(wfid,rawchange,'unit16');
    end
    fclose(rfid);
    fclose(wfid);
    
end
    
  1. dir()函数用法:
    此 MATLAB 函数 列出当前文件夹中的文件和文件夹。
    dir
    dir name
    listing = dir(name)
    三种:
    1、dir(’.’) 列出当前目录下所有子文件夹和文件
    2、dir(‘E:\Matlab’) 列出指定目录下所有子文件夹和文件
    3、dir(E:\Matlab,’*.raw’) 列出指定目录下后缀为.raw的文件

  2. strcat函数用法 连接字符串使用:
    用在批量处理,横向连接字符串, 水平地连接成单个字符串;
    水平串联 s1,…,sN。每个输入参数都可以是字符数组、字符向量元胞数组或字符串数组。
    1、如果任一输入是字符串数组,则结果是字符串数组。
    2、如果任一输入是元胞数组,并且没有输入是字符串数组,则结果是字符向量元胞数组
    3、如果所有输入都是字符数组,则结果是字符数组。
    s = strcat(s1,…,sN)
    注意:文件夹路径必须加入\

  3. fopen - 打开文件或获得有关打开文件的信息
    打开文件 filename 以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 0、1和 2 分别用于标准输入、标准输出(屏幕)和标准错误。

    fileID = fopen(filename)
    fileID = fopen(filename,permission)
    fileID = fopen(filename,permission,machinefmt,encodingIn)
    [fileID,errmsg] = fopen(___)
    fIDs = fopen(‘all’)
    filename = fopen(fileID)
    [filename,permission,machinefmt,encodingOut] = fopen(fileID)

    w  打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 
    w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
    a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 (原来的EOF符不保留)
    wb 只写打开或新建一个二进制文件;只允许写数据。
    wb+ 读写打开或建立一个二进制文件,允许读和写。
    wt+ 读写打开或着建立一个文本文件;允许读写。
    at+ 读写打开一个文本文件,允许读或在文本末追加数据。
    ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
    
    
    
  4. fseek

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值