Pydicom读取dcm格式视频
dicom文件的相关处理是小众需求,这两天毕业设计需要处理dcm视频,视频相比于图像更是小众中的小众,无奈找了全网也没几个人写教程。 虽然事实上很简单,但是在着急完成项目的时候很难静下心来研究,毕竟人家真不一定做了这功能。
本文需要用到:
- Pydicom读取dcm视频
- Opencv格式转换
Pydicom的官方文档也没有提到视频处理,不过方法就是探索出的。 我们根据官方文档中的读取dcm图片的方法
import pydicom import cv2 dataset = pydicom.dcmread(filename)
此时dataset中就有dcm视频的全部信息了,然后视频的图像信息储存在dataset.pixel_array中,shape为(总帧数,长,宽,位深)可以通过遍历dataset.pixel_array.shape[0]遍历每张图片
for i in range(dataset.pixel_array.shape[0]): img = dataset.pixel_array[i]
最后是转换成视频,本文是用的是opencv的方法,需要额外进行一步rgb转bgr。 以下是全部代码
import pydicom import cv2 import numpy as np filename = D:\dcm\1.dcm # 名字为举例 dataset = pydicom.dcmread(filename) videoname = filename.replace(.dcm, .avi) videoWriter = cv2.VideoWriter(videoname, cv2.VideoWriter_fourcc(*MJPG), 30, (640, 480)) # 30为帧数,(640, 480)为长宽 for i in range(dataset.pixel_array.shape[0]): img = dataset.pixel_array[i] img = np.array(img) # 印象里cv读的图片是array格式,如果不必要可以删去 r, g, b = cv2.split(img) img = cv2.merge([b, g, r]) # rgb转换gbr img = cv2.resize(img, (640, 480)) # 此处最好resize,因为size不一样写不进去 videoWriter.write(img) videoWriter.release()
基本完成 缺点是似乎没法转成mp4,只能转成avi之类的,不过这个转换工具就多了,也可以自己寻找其他教程
上一篇:
IDEA上Java项目控制台中文乱码