萌萌哒的小米糊 2019-01-18 04:10 采纳率: 0%
浏览 1614

pydicom解析dcm文件生成数组时运行异常

问题:pydicom解析dcm文件,在dcm.pixel_array 生成数组时程序运行错误,想知道这样的异常怎么解决?

环境:PyCharm+python+win10

文件名称格式:1123243.3234432.a.342.dcm

问题说明:只是部分图片无法解析,并不是所有的dcm文件都会报这种异常

源代码:

import shutil
import pydicom
import os
import cv2
import numpy as np
def convert_file(dcm_file_path, jpg_file_path):
    #遍历本地文件路径
    for dirs in os.listdir(dcm_file_path):
        #拼接成绝对路径
        dirs = os.path.join(dcm_file_path,dirs)
        print(dirs)
        #用pydicom读取dcm文件
        dcm = pydicom.read_file(dirs)
        print(dcm)
        #获得图像信息
        img = dcm.pixel_array  #程序运行到此处的时候报错
        print(img)
        # scaled_img = cv2.convertScaleAbs(
        #     img - np.min(img), alpha=(255.0 / min(np.max(img) - np.min(img), 10000)))
        # print(os.path.join(jpg_file_path,dirs,os.path.basename(dirs)))
        # new_filename = os.path.join(jpg_file_path, dirs, os.path.basename(dirs).split('.')[0] + '.jpg')
        # print(new_filename)
        # cv2.imwrite(new_filename, scaled_img)

dstpath = r'D:\test\wandong'
srcpath = r'D:\test\jpg02'
convert_file(dstpath,srcpath)

运行报错:
No available image handler could decode this transfer syntax JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1])

展开全部

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 10:18
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,你尝试将pixel_array转换为numpy数组。但是,当你运行这个函数时,它抛出了一个异常,这可能是由于以下原因:

    1. dcm.pixel_array是一个字节数据结构,而不是np.ndarray类型的数组。
    2. 你可能没有正确地初始化scaled_img变量或new_filename变量。

    为了修复这个异常,你可以考虑以下几个步骤:

    首先,检查pixel_array是否是一个字节数据结构,如果不是,请将其转换为一个np.ndarray类型的数据结构。这可以通过使用np.frombuffer()方法来实现:

    img = np.frombuffer(dcm.pixel_array, dtype=np.uint8)
    

    然后,你可以创建一个新的cv2.imread()调用来读取JPEG图像,并保存为scaled_img变量:

    scaled_img = cv2.imread(img, cv2.IMREAD_UNCHANGED)
    

    最后,你需要更新new_filename变量以包含正确的扩展名:

    new_filename = os.path.join(jpg_file_path, dirs, os.path.basename(dirs).split('.')[0] + '.jpg')
    print(new_filename)
    

    这样,你应该能成功处理pydicom文件中的pixel_array字节数据并将其转换为np.ndarray类型的数据结构。

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部