【探测器】opencv显示探测器的raw图像

【探测器】opencv显示探测器的raw图像

1、背景

对于探测器(相对于可见光成像的相机,这里的探测器指的是对X光成像的相机)。
RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息。
RAW格式是无损格式,相比于JPG格式,RAW格式的好处有很多,它会记录下成像的的所有细节,这些细节在后期您可以根据场景进行修改。

其中RAW格式的文件可以作为VG的CT建模的输入文件,但是请注意文件的格式是uint16,即单个像素可以被表达成2*16-1(65536)层次!

2、代码

代码很简单,使用numpy读取raw文件,并将数据排列成3维数组,然后opencv显示即可。
代码示例如下:

# -*- coding: utf-8 -*-
'''prompt:I only publish in csdn:jn10010537! 2023.06.28;'''
import cv2
import numpy as np

def read_raw_from_detector(raw_dir,rows=1536,cols=1536,channels = 1,dtype='uint16'):
    '''
    读取探测器拍摄的raw图像。
    本函数,默认是NDT0505J拍摄的raw图像。
    :param raw_dir:raw文件路径
    :param rows:行,即图像的像素高度;
    :param cols:列,即图像的像素宽度;
    :param channels:通道,默认是单通道。
    :param dtype:像素的数据类型,默认是uint16
    :return:None
    '''
    # 利用numpy的fromfile函数读取raw文件,注意指定正确的数据格式
    raw_data = np.fromfile(raw_dir, dtype=dtype)
    # 将1维数组转化为3维数组,reshape函数将读取到的数据进行重新排列。
    img_rgb = raw_data.reshape(rows, cols, channels)
    # cv2.WINDOW_NORMAL就是0,窗体可以自由变换大小
    cv2.namedWindow("raw_pic",0)
    # 指定窗体名称,以及要显示的numpy多维数组;
    cv2.imshow("raw_pic",img_rgb)
    cv2.waitKey()

if __name__ =="__main__":
    raw_dir=r"./ACap_1_184.00_1536X1536.raw"
    read_raw_from_detector(raw_dir)

运行如下:
在这里插入图片描述

3、下载

提供了ACap_1_184.00_1536X1536.raw下载路径,以便您练习!
https://download.csdn.net/download/jn10010537/87955410

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/131427208