和dcm转dcm一样的方法,同样是通过修改dcm.PixelData来改变dcm的像素内容。
下面是将一个三通道黑白JPG图片(512,512,3)转为dcm文件的例子:
注意:黑白二值图的三个通道,每个通道的数值都是一样的,取一个就行,这样就得到(512,512)的二维数组了。
import pydicom
import numpy as np
import os
from pydicom.uid import ExplicitVRLittleEndian
import cv2
img = cv2.imread("001.jpg")
print(img.shape) #(512, 512, 3)
# cv2.imshow("001.jpg",img)
# cv2.waitKey()
print(img.dtype) #uint8
img_arr16 = np.array(img, dtype=np.int16)
#print(data_changed)
data_changed = img_arr16[:, :, 0]
print(data_changed.shape) #(512, 512)
pd = data_changed.tobytes()
print(len(pd)) #524288
dcm = pydicom.dcmread("001.dcm")
dcm.PixelData = pd
dcm.file_meta.TransferSyntaxUID = ExplicitVRLittleEndian
dcm.save_as("002.dcm")
输出:
(512, 512, 3)
uint8
(512, 512)
524288
002.dcm:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)