0

我正在使用GDCM库创建一个 DICOMDIR 文件。我实现了GDCM文档中所示的代码:

http://gdcm.sourceforge.net/html/GenerateDICOMDIR_8cs-example.html

在代码中:

    private int GenerateDicomDir(string directory, string outFileName)
    {
        gdcm.Directory d = new gdcm.Directory();
        uint nfiles = d.Load(directory, true);
        if (nfiles == 0) return 1;

        string descriptor = "Descriptor";
        FilenamesType filenames = d.GetFilenames();

        gdcm.Trace.DebugOn();
        gdcm.DICOMDIRGenerator gen = new DICOMDIRGenerator();
        gen.SetFilenames(filenames);
        gen.SetDescriptor(descriptor);
        if (!gen.Generate())
        {
            return 1;
        }

        gdcm.FileMetaInformation.SetSourceApplicationEntityTitle("GenerateDICOMDIR");
        gdcm.Writer writer = new Writer();
        writer.SetFile(gen.GetFile());

        writer.SetFileName(outFileName);
        if (!writer.Write())
        {
            return 1;
        }

        return 0;
    }

该函数返回但不生成DICOMDIR文件。我已经添加了跟踪调试,但仍然无法调试或获取任何输出消息。

有没有办法为一堆 DICOM 文件生成 DICOMDIR 文件?

4

1 回答 1

0

根据文档,您是否确定:

警告::PS 3.11 - 2008 / D.3.1 SOP 类和传输语法复合图像和独立存储需要存储为 Explicit VR Little Endian Uncompressed (1.2.840.10008.1.2.1)。当使用另一种传输语法找到 DICOM 文件时,生成器将简单地停止。输入文件应该是 Explicit VR Little Endian 文件名应该是有效的 VR::CS 值(16 字节,大写 ...)

如果您打开详细调试,您可以记录确切的错误消息,请参阅gdcm::Trace了解用法。

根据 gdcm::Trace 的文档,您需要注意以下几点:

警告:在编译时将所有字符串消息在 CMAKE_BUILD_TYPE 设置为以下任一情况下删除:Release MinSizeRel 建议在应用程序原型设计期间使用 RelWithDebInfo 和/或 Debug 进行编译。

您还可以使用gdcm::Trace::SetStreamToFile将任何消息正确重定向到文件(而不是默认情况下的标准输出)。

由于您使用 gdcm.Directory 的递归选项,您还需要注意子目录名称是有效的(VR::CS,16 字节,大写...)。

另请参阅gdcmgendir 手册页以获取更多信息。

于 2015-01-08T09:50:14.310 回答