使用此代码时,我没有得到想要的结果(参见图片)。
DicomImage *image = new DicomImage("/home/000001.dcm");
cv::Mat inputImage(int(image->getHeight()), int(image->getWidth()), CV_16UC1, (uchar*)image->getOutputData(16));
因为图像的深度为17,如果将CV_16UC1更改为CV_32xx,我会得到一个无意义的图像。 显然,17位需要超过16位才能正确存储。 我的问题是,我应该使用哪种Opencv Map类型(CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4或其他),它们之间有什么区别,我是否必须使用位掩码来防止剩余的高位垃圾产生垃圾,我该如何使用?这样吗?
[
答案 0 :(得分:1)
渲染图像的问题不是16位深度与17位深度(因为您已指定始终获得16位),而是尚未选择合适的VOI窗口,例如通过在image->setMinMaxWindow()
之前调用image->getOutputData()
。