0

我正在为 GDCM 使用 SWIG 生成的 Python 包装器(与 gdcm.py 一起提供)。

我正在运行以下 Python3 脚本。

import gdcm
import sys

filename="path_to_data/gdcm_test.dcm"

r = gdcm.Reader()
r.SetFileName(filename)
r.Read()

f=r.GetFile()
ds = f.GetDataSet()

csa_t1 = gdcm.CSAHeader()

t1 = csa_t1.GetCSAImageHeaderInfoTag()

csa_t1.LoadFromDataElement(ds.GetDataElement( t1))
csa_t1.Print(sys.stdout)

gdcmswig.py 文件中的相关片段(带有包装打印的函数)如下。

def Print(self, os: 'std::ostream &') -> "void":
    """
    void
    gdcm::CSAHeader::Print(std::ostream &os) const

    Print the CSAHeader (use only if Format == SV10 or NOMAGIC) 
    """
    return _gdcmswig.CSAHeader_Print(self, os)

问题出现在我脚本的最后一行。调用 Print(sys.stdout)。

TypeError: in method 'CSAHeader_Print', argument 2 of type 'std::ostream &'

我认为,问题在于 Python 的 sys.stdout 不是实际的输出文件句柄,而是包装了句柄。解决这个问题的最佳方法是什么?提前致谢。

4

0 回答 0