【探测器】opencv显示探测器的raw图像
- 1、背景
- 2、代码
- 3、下载
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