DCMTK+VS2012简明教程


环境:win7x64,VS2012,DCMTK3.6.0


参考柳北风儿的教程:点击打开链接

1、下载DCMTK源码

点击打开链接


解压到"D:\dcmtk"(或者任意目录),这是DCMTK的源码,等一下要编译的。

2、下载运行库


随便解压到一个地方,得到如下内容:


在本目录下完成以下3步:

(a)在本目录下搜索“_d.lib”,得到7个结果:


重命名,将所有的“_d”删除,然后将这些文件拷贝到VS安装目录下的"\VC\lib\"

(b)在本目录下搜索“include”,得到5个结果:


将这些文件夹复制到VS安装目录下的"VC",合并

(c)将“openssl-1.0.0c\bin”下的5个文件复制到VS安装目录下的"\VC\bin\"


3、CMake编译

(a)在“dcmtk-3.6.0”目录下找到“CMakeLists.txt”,并打开,把所有的“/MT”替换为“/MD”;查找“# DCMTK build options”,把“DCMTK_WITH_TIFF、DCMTK_WITH_PNG、DCMTK_WITH_XML、DCMTK_WITH_ZLIB、DCMTK_WITH_OPENSSL”这5项都设为“ON”,保存txt

(b)自己新建一个目标文件夹,我的是"D\dcmtkProject",用来存放编译好的文件,用CMake把“dcmtk-3.6.0”目录的源码编译一遍。Of course,目标平台选择VC 11 (32位的,x64我没试)。如无意外,两次configure就可以generate了。

4、VS编译

用VS打开"D\dcmtkProject"里的.sln,然后选择“生成”->“批生成”,如图设置后选择"生成",最后看到76个编译成功,0个失败:


然后在进入一次批生成,把刚刚的勾消掉,选中如图的:



至此,我们得到了DCMTK的库文件!默认路径是C:\Program Files (x86)\DCMTK\lib,里面有一些lib,bin,include文件。该路径应该可以再CMake的时候修改,不过我没试。


5、Demo

借用了zssure的代码:点击打开链接

#include "stdafx.h"
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmdata/dcpxitem.h"
#include "dcmtk/dcmjpeg/djdecode.h"
#include "dcmtk/dcmjpeg/djencode.h"
#include "dcmtk/dcmjpeg/djcodece.h"
#include "dcmtk/dcmjpeg/djrplol.h"

int _tmain(int argc, _TCHAR* argv[])
{
	DJEncoderRegistration::registerCodecs(); // register JPEG codecs
	DcmFileFormat fileformat;
	if (fileformat.loadFile("D:\\Document_x64\\Documents\\Visual Studio 2012\\Projects\\resource\\1.dcm").good())
	{
		DcmDataset *dataset = fileformat.getDataset();
		DcmItem *metaInfo = fileformat.getMetaInfo();
		DJ_RPLossless params; // codec parameters, we use the defaults

		// this causes the lossless JPEG version of the dataset to be created
		dataset->chooseRepresentation(EXS_JPEGProcess14SV1TransferSyntax, &params);
		// check if everything went well
		if (dataset->canWriteXfer(EXS_JPEGProcess14SV1TransferSyntax))
		{
			// force the meta-header UIDs to be re-generated when storing the file
			// since the UIDs in the data set may have changed
			delete metaInfo->remove(DCM_MediaStorageSOPClassUID);
			delete metaInfo->remove(DCM_MediaStorageSOPInstanceUID);

			// store in lossless JPEG format
			fileformat.saveFile(".\\test_jpeg.dcm", EXS_JPEGProcess14SV1TransferSyntax);
		}
	}   
	DJEncoderRegistration::cleanup(); // deregister JPEG codecs
	
	return 0;
}

实现功能:对DCM图像进行JPEG压缩,最后保存为test_jpeg.dcm

项目属性配置:

1、包含目录:C:\Program Files (x86)\DCMTK\include,库目录:C:\Program Files (x86)\DCMTK\lib

2、“C/C++”->"代码生成"中的“运行库”设为“/MDd”

3、添加依赖项(视具体项目而不同):

netapi32.lib
wsock32.lib
ofstd.lib
oflog.lib
dcmimgle.lib
ijg8.lib
ijg12.lib
ijg16.lib
dcmdata.lib
dcmimage.lib
dcmjpeg.lib
dcmnet.lib
zlib.lib

具体的依赖关系在这里有所陈述:点击打开链接

开始享受DCMTK吧!

你可能感兴趣的:(DCMTK)