![](/img/trans.png)
[英]Getting error “This page uses frames, but your browser doesn't support”
[英]Getting “DicomTag doesn't support values” when trying to obtain DicomDataset
升級到fo-dicom 4.0后,我開始獲得DicomDataException: 'DicomTag doesn't support values'
嘗試從DICOMDIR文件獲取DicomDataset時, DicomDataException: 'DicomTag doesn't support values'
。
代碼如下:
var dicomDirectory = await DicomDirectory.OpenAsync(dicomdirPath);
foreach (var patientRecord in dicomDirectory.RootDirectoryRecordCollection)
{
foreach (var studyRecord in patientRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var seriesRecord in studyRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var imageRecord in seriesRecord.LowerLevelDirectoryRecordCollection)
{
//this is the problematic line
var dicomDataset = imageRecord.GetValue<DicomSequence>(DicomTag.IconImageSequence, 0).Items.First();
//more stuff
}
}
}
}
在以前的版本(3.?)中,我正在執行var dicomImage = imageRecord.Get<DicomSequence>(DicomTag.IconImageSequence).Items.First();
並且它工作得很好,但是在升級之后,我收到了過時警告,因此將其更改為推薦的方法,即GetValue。
如何使用fo-dicom的當前版本獲取數據集?
最后,在仔細研究了fo-dicom的Gitter和GitHub問題(以及注釋中提到的@BenVoight )之后,我發現在4.0中,我們應該使用GetSequence(DicomTag.IconImageSequence)
而不是GetValue<DicomSequence>(DicomTag.IconImageSequence)
:檢索序列時,將使用GetValue拋出。 在項目的Dataset測試中可以看到,還添加了其他一些Get
方法,例如GetValueOrDefault
, GetValues<T>
而不是GetValue<T[]>
等。
此外,作為推論,我還發現了與先前版本有關的4.0中的另一個API不兼容(如果有人升級並丟失更改,我會在此處發布它):處理DicomImage時,我們不應訪問其.Dataset
檢索值,因為它也已棄用。 相反,我們應該存儲對創建DicomImage的數據集的引用,以便檢索標簽值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.