Python将.bin文件数据分析生成RGB图和灰度图

目录

1. 数据分析    

2.方法分析


一. 数据分析    

工作中,领导让帮其他同事处理一些数据,协助他们分析一些问题(据说以前有工具,然后数据结构变了,不能用了)数据格式如下所示:

Python将.bin文件数据分析生成RGB图和灰度图_第1张图片 十六进制的数据

这是扫描一张支票图像保存的二进制数据,其中图像的尺寸大小为(3024*500),保存的二进制数据结构为

Python将.bin文件数据分析生成RGB图和灰度图_第2张图片 一线(一列)数据的构成
  1. 数据构成我解析成首先是第一列像素点的红色分量的像素值, r1,r2,r3,f1,r4,r5,r6,f1,.......r3022,r3023,r3024,f1(其中f1为标识位,为09(十六进制))
  2. 然后是第一列像素的绿色分量的像素值,g1,g2,g3,f2,g4,g5,g6,f2,.......g3022,g3023,g3024,f2(其中f2为标识位,为0A(十六进制))
  3. 接着是第一列像素的蓝色分量的像素值,b1,b2,b3,f3,b4,b5,b6,f3,.......b3022,b3023,b3024,f3(其中f3为标识位,为0B(十六进制))
  4. 最后是第一列像素的红外扫描的像素值(灰度值),ir1,ir2,ir3,f4,ir4,ir5,ir6,f4,.......ir3022,ir3023,ir3024,f4(其中f4为标识位,为10(十六进制))

其余部分的数据结构依次循环。在一列中每个分量有1008个标识位,所以.bin文件的数据个数为(3024+1008)*500*4

二.方法分析

  1. 读取.bin文件数据
  2. 将数据(过滤掉标识位)转化成十进制并且存在一个list中
  3. 将步骤二中的数据提取成R、G、B、ir分量数据
  4. 使用numpy+opencv将步骤三中的数据生成BGR图和红外扫描的灰度图

下面附上Python代码

import struct
import os
import cv2 as cv
import numpy as np
if __name__ == '__main__':
    filepath='D:\\文件处理\\DPM910_0_transdata.bin'
    binfile = open(filepath, 'rb') #打开二进制文件
    size = os.path.getsize(filepath) #获得文件大小
    # print(size)
    Data = []
    i = 1
    while(i

下面给出处理后的图

BGR图
ir灰度图

Python新手,大佬勿喷!

你可能感兴趣的:(文件数据处理)