error C2440: “初始化”: 无法从“DicomImage *”转换为“DicomImage”解决方案

C#开发PACS医学影像处理系统(六):加载Dicom影像 对于一款软件的扩展性和维护性来说,上层业务逻辑和UI表现一定要自己开发才有控制权,否则项目上线之后容易被掣肘, 而底层图像处理,我们不需要重复造轮子,这里推荐使用fo-dicom,同样基于Dicom3.0协议。 根据以上原则,后台影像处理完成之后,即可使用自己开发的控件来呈现。 1.先准备好自己的dcm文件,可以是单个文件或序列文件或DicomDir文件。 2.在VS编辑器里打开NUGET搜索fo-dicoman安装即可。 3.使用fo-dicom读取影像。 //... 阅读详情

问题出处:

          用DCMTK编写一个MFC程序,目标是实现DICOM图像的显示。错误代码如下:

DicomImage dcmImage = new DicomImage(dataset, xfer);

 

          在网上也看到很多人再问这个错误怎么解决。我自己的解决方法如下:

错误提示

          错误 1 error C2440: “初始化”: 无法从“DicomImage *”转换为“DicomImage” d:/dcmtk/dicomviewer/dicomviewer/dicomviewerdlg.cpp 186 DicomViewer。

解决过程:

打开BuildLog(在Debug目录下),会看到以下错误提示:

正在编译...
DicomViewerDlg.cpp
d:/dcmtk/dicomviewer/dicomviewer/dicomviewerdlg.cpp(186) : error C2440: “初始化”: 无法从“DicomImage *”
转换为“DicomImage” 无构造函数可以接受源类型,或构造函数重载决策不明确。
BuildLog中提示: 无法从“DicomImage *”转换为“DicomImage”,那我们就将出错语句改为:

DicomImage *dcmImage = new DicomImage(dataset, xfer);

个人观点:

    关于错误的原因,我个人是这样想的:很多人在使用C++之外,还会使用C#等语言,而在C#中,类初始化时,就是用以上方式初始化。
但在C++中,new表达式只能为指针动态创建对象。

 

如何将 DICOM 图像转换为 JPG 或 PNG 在计算机视觉中,我们经常使用医学图像,我们拥有的几乎所有数据库都包含 DICOM 图像。Dicom 图像不仅仅是一张图像,它包含像素信息、患者信息等。 在这种情况下,我们只需要将图像可视化或将其保存为 JPG 或 PNG,以便我们可以使用任何我们想要的软件打开它。 为此,我们需要额外的库来与 Python 一起使用。第一个是Pydicom,它是一个专门用于 Dicom 图像的库,第二个是Pillow,我更喜欢用它来显示和保存 JPG 图像。最后,第三个是Numpy来操作数组。 我会一步一步地和你一起做所有的 阅读详情

相关推荐

dcmtk程序包简介

dcmtk程序包简介***该文简单列出了dcmtk程序包的简介,包括主要接口类的简单说明,可用工具以及一些例子。下一步工作准备详细分析每个程序包中的接口类功能,并结合源码和dicom文档分析其实现过程。Dcmtk程序包简介一、Config程序包-config目录下的文档:--config.txt:指出你编辑的任何.h .c .cc文件首先必须包含该目录下的头文件#include

diqiucun666的专栏 5934

7. DICOM图像显示-DCMTK-像素数据的三次转换和源码分析

要显示DICOM格式的医学图像必须将原始图像数据经过一系列的转换才能得到可直接在显示设备上显示的数据(称之为P Values)。DICOM医学图像显示需要经过Modality LUT、VOI LUT、Presentation LUT三个转换过程,最终输出的P Values才是可以直接显示的图像数据。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f7b522e0dcf941c88eb15ad3f110902c.png) 1. Modality LUT   通常不同生产厂

tianma2012的博客 4640

8. DICOM图像显示-DCMTK-图像显示和源码分析

  上篇文章讲了dcmtk的dcmimgle模块的DicomImage类的像素数据的多个处理过程,最终通过DicomImage类的getOutputData()获取P values值,即最终显示的灰度值。   DicomImage类封装了丰富了的图像处理方法,是dcmtk推荐使用的图像处理外部接口类。 获取灰度值   DicomImage提供了两个方法获取灰度值   bits是每个采样点的位数,灰度值是8bit   frame是要获取的帧数,多帧图像可以选择具体第几帧的图像灰度值,单帧图像只能使用默认值

tianma2012的博客 4230

【DCMTK】把DicomImage封装(隐式共享)

DicomImage封装成 QSharedData 使用 (显式共享)1 简单了解DICOM 协议2 DicomImage 常用功能2.1 DicomImage 转 QPixmap2.2 DicomImage 剪裁2.3 DcmFileFormat 获取 标签信息2.4 DcmFileFormat 获取 常用标签/图片2.5 DicomImage 获取像素信息3 ImageInstanceData 封装4 ImageInstance 封装   尽量保证不出现内存泄露,先使用 QSharedData 和

Beyond欣 1791

DicomImage,cvMat,QImage之间的转换

//读取文件名和保存解压后的临时文件名 string fileNamestr=fileName.toStdString(); //解压dicom文件 DJDecoderRegistration::registerCodecs(); DcmFileFormat Dicomfile; if(Dicomfile.loadFile(fileNamestr.c_str()).good()) {    ...

fanhenghui的专栏 2059

【DCMTK】DicomImage封装成序列

  上一篇介绍 Dicom影像如何再Qt下高效使用。  把DicomImage封装成 QSharedData 使用 (显式共享) 1 简单了解DICOM 协议    提到了Dicom影像的检索模型。同一个系列可能有多张dicom影像(比如CT),我们做可视化的时候肯定需要把一系列按照高度一起显示。 ├── PATIENT (病人) │ │ └── STUDY (检查) │ │ │ │ └── SERIES (序列) │ │ │ │ │ │ └── IMAGE (影像 高度为未知) │ │ │ │ └──

Beyond欣 2276

Dicom中的Image Orientation/Position的理解和应用

在DICOM中,是通过Image Position和Image Orientation来描述当前的图像和人体坐标系的相对位置的。 打开DCM文件时,会发现下边的两个tag (0020,0032) DS ImagePosition(Patient) "-20.000000\-150.000000\150.000000 " (0020,0037) DS ImageOrientation(Pati...

rendawei636专注医疗软件 1万+

DICOM医学图像处理:BMP转DCM、DCM转BMP、多张BMP转DCM、JPG转DCM,,多张JPG转DCM。

​ 使用DCMTK库实现BMP转DCM的互相转换以及JPEG转DCM。使用DCMTK库其中在编译的时候错了好几次,在这有编译好的库给大家分享在此附上连接只需要1积分(DCMTK编译好的库-C/C++其他资源-CSDN下载)。直接使用DCMTK库实现的功能,期间本人也下载了好多但是大部分都没用复制粘贴出来的水贴有点多。其中借鉴了zssure大神的两篇文章(JPEGDICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”_zssure的博客-CSDN博客)(BMPDICOM医学图像处

断点 7052

什么是医疗影像?DICOM与窗宽窗位

在接触人工智能医疗方面时,单是学习算法和代码原理还不够,需要一定的医学影像知识储备。 B超、CT、MR等都算是医疗影像,在现实生活中,从医院检查身体后拿到的胶片是处理过后的二维图像。这些医疗影像其实是三维的。 最常见的图片格式有JPG、PNG等等,这些都是二维图片。而医疗影像的格式也有很多,其中最常见的是DICOM。 什么是DICOM? 为了方便各种医疗设备的通讯,美国成立的ACR-NEMA协会...

Yikong的博客 2691

11. DICOM图像显示-DCMTK-overlay覆盖层处理和源码分析

本篇文章介绍如何基于dcmtk实现Radiant软件图像overlay操作。 dicom协议的overlay原理部分见文章1.9 DICOM带有overlay覆盖层图像显示(一层覆盖层) Radiant有如下overlay操作: 隐藏和显示overlay数据 样例图像 一. 实现Radiant相同功能 上图所示的DICOM图像有两层overlay,PixelData全为0。图像中显示的全是overlay数据。 显示overlay数据 dcmtk默认显示图像自带的overlay数据,将overlay数

tianma2012的博客 1453

从DICOM开始入门医学图像处理-3-DICOMDIR文件解析

前言 上一篇文章给出了VTK+V+QT的安装方法,其余的两个库,也就是ITK和DCMTK的安装很简单,有一定的CMake使用经验就能很容易的成功编译出我们需要的库.这篇文章主要讲DICOM文件档案的存储形式. DICOM档案存储形式 DICOM图像有三种常见的存在形式: ①单独存储 这种形式就是只有一张单张的医学图像,没有任何其他的文件,也没有与这张图片同属一次扫描序列的其他图片文件.

安娜的修行 2万+

DICOM图像解析:深入解析DICOM格式文件的高效读取与处理(续)

本文主要介绍如何高效处理压缩的像素数据和多帧图像数据。

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1872

解决Qt引入QtWebApp的模块后报错error C2440: “=”: 无法从“_Ty”转换为“T”问题

在项目中需要引入QtWebApp的httpsever,logging,templateengine三个模块。error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”排查了好久,VS和Windows Kits版本都卸载装回了原来的版本,还是报错,就差重装系统了。error C2440: “=”: 无法从“_Other”转换为“_Ty”上,查阅资料发现,这个是vs的历史遗留问题,增加编译选项。,问题就出在这个为什么导致重定义上?,可是nullptr。

u012418923的博客 1269

错误 c2440初始化: 无法从“void转换到“cv::mat”_干货 | C语言编程常见错误及解决办法...

点击上方“我要学编程”,选择“置顶/星标公众号”福利干货,第一时间送达!一、指针没有指向一块合法的内存定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存。浅显的例子就不举了,这里举几个比较隐蔽的例子。1、结构体成员指针未初始化structstudent{char*name;intscore;}stu,*pstu;intmain(){strcpy...

weixin_30956665的博客 2475

14. DICOM图像显示-DCMTK-处理超声彩色图像

  本篇文章实现radiant对彩色图像显示和窗宽窗位调整。   前面的文章对DICOM图像的操作都是基于dcmimgle模块的DcmImage类实现的。 dcmtk官方说明:   模块dcmimgle包含访问和渲染 DICOM 单色图像的类。   模块dcmimage提供对彩色图像的支持。   模块dcmjpeg提供了对 JPEG 压缩图像的支持。 即,   dcmimgle只支持MONOCHROME1和MONOCHROME2单色图像   dcmimage只支持彩色图像 要支持彩色图像,需要以下操作 引

tianma2012的博客 4383

CT影像文件格式DICOM详解

CT影像文件格式DICOM详解 DICOM简介 DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。所有患者的医学图...

zsddragon的博客 3万+

错误 C2440

错误 C2440错误 C2440初始化: 无法从“char”转换为“char *” 错误 C2440初始化: 无法从“char”转换为“char *” 从整型强制转换为指针类型要求 reinterpret_cast、C 样式强制转换或函数样式强制转换 错误 C2440初始化: 无法从“char”转换为“char *” 修改方案: 将 “符合模式选项” 改为 “否” ...

鷝翗的博客 1万+

DICOM文件格式与编程

任何图像文件格式无非是由两个部分组成:存参数的 header 和图点数据(pixel data)。BMP、 JPEG、TIFF 之类的格式的 header 只描述图像的基本参数:如几行、几列、每点用了几位、有没有压缩、调色板等等。Header 往往是固定长度的。 而医疗影像还要许多其它参数,如病人基本资料、检验基本资料、系列资料、位置资料等等。而且每种Modality 和每种 image 所需要的

微笑的艾米 5697
上一篇: VS2008下MFC使用DCMTK详解。
下一篇: MFC文件遍历类CFileFind例程
flywithmj
博客等级 码龄16年 18粉丝 28原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值