0

ここでチュートリアルに従おうとしています:

http://www.rexcardan.com/2014/10/evil-dicom-basics/

DICOM ファイルを処理して画像を表示します。チュートリアルでは、ファイル パスを処理するために DICOMObject.Open() メソッドが呼び出されます。私の問題は、インテリセンスがこれを拾わないことです。誰でもこれを支援できますか?

このバージョンをダウンロードしました:

https://github.com/rexcardan/Evil-DICOM

編集

以下を使用します。

var dcm = DICOMObject.Read(@"C:\file\path\filename.dcm");

すべてのコードをステップ実行するDICOMObjectと、この時点まで正常に機能しているように見えます。

public static IDICOMElement ReadElementImplicitLittleEndian(DICOMBinaryReader dr)
{
    var tag = TagReader.ReadLittleEndian(dr);
    var vr = TagDictionary.GetVRFromTag(tag);
    int length = LengthReader.ReadLittleEndian(VR.Null, dr);
    var data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN);
    var el = ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN);
    return el;
}

コードが到達したとき:

int length = LengthReader.ReadLittleEndian(VR.Null, dr);

length~2GBintのを返します。1919252000 bytes次に、コードは次のようにステップします。

var data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN);

読み取るバイトがあるかどうかを確認し(存在する)、読み取りバイトに移動します。

public byte[] ReadBytes(int count)
{
    byte[] buffer = new byte[count];
    _binaryReader.Read(buffer, 0, count);
    return buffer;
}

byte[] buffer = new byte[count];コード内で実際の例外が発生する場所です。処理できるバイト数をテストしましたが、必要なバイト数の.6 - .7 GB半分にも満たないようです。必要なものをすべて受け入れるためにバッファを拡張する方法はありますか?

4

3 に答える 3

1

私はビデオを見ていませんが、私が知る限り、次のものを使用する必要があります。

var dicomObj = DICOMObject.Read(filePath);

Evil DICOMを使用して DICOM ファイルを読み取ります。

ソースコードはこちらをご覧ください。確かではありませんが、この混乱を説明する最近の API の変更があった可能性があります。

于 2015-01-15T07:02:41.420 に答える
0

これを試して

var bdcm= File.ReadAllBytes(@"AbsolutePath");
var dcm = DICOMObject.Read(bdcm);
于 2015-09-27T08:10:07.180 に答える