DCM图--按SeriesNumber进行分类
来源:互联网 发布:angular.js 几种路由 编辑:程序博客网 时间:2024/06/03 21:19
留后面参考。------将文件中的DCM图按照序列号进行分类,将相同序列号的DCM图移动到与序列号同名的文件中
#include "stdafx.h"#include <vector>#include <map>#include <string>#include <winsock2.h> #include <string>#include <iostream>#include <algorithm>#include <math.h>#include "dcmtk/dcmdata/dctk.h"#include "dcmtk/dcmdata/dcxfer.h"#include "dcmtk/dcmdata/dcrledrg.h"#include "dcmtk/dcmjpeg/djdecode.h" /* for dcmjpeg decoders */#include "dcmtk/dcmimgle/dcmimage.h" /* for DicomImage */#include "dcmtk/dcmjpeg/dipijpeg.h" /* for dcmimage JPEG plugin */#include <Windows.h> #include <io.h>#include <direct.h>#include <sstream>extern "C" {#include "jpeglib.h"}#pragma comment(lib,"Netapi32.lib")#pragma comment(lib, "ws2_32.lib") using namespace std;void SplitEx(const string& strOrignal , char ch , vector<string>& vctString) { istringstream iss(strOrignal); string item; while(getline(iss , item , ch)) vctString.push_back(item); return; } DcmFileFormat *pFileFormat = new DcmFileFormat();bool MoveDcmFile(string strPath){if(NULL == pFileFormat){cout<<"NULL == pFileFormat"<<endl;return false;}OFCondition oc = pFileFormat->loadFile(strPath.c_str());if(oc.bad()){cout<<"no tag: "<<strPath<<endl;return false;}DcmDataset* pDataset = pFileFormat->getDataset();int nSeriesNumber = 0;OFString strSeriesNumber;pDataset->findAndGetOFString(DCM_SeriesNumber, strSeriesNumber);nSeriesNumber = atoi(strSeriesNumber.c_str());vector<string> vctPathBlock;SplitEx(strPath, '\\', vctPathBlock);ostringstream oss;//创建一个流if(vctPathBlock.size() < 0){cout<<"路程错误"<<endl;return 0;}for(int i = 0; i < vctPathBlock.size() - 1; i++){oss<<vctPathBlock[i]<<"\\";}oss<<nSeriesNumber<<"\\";//创建保存文件夹char *strSaveFilePath = new(std::nothrow)char[oss.str().length() + 1];memset(strSaveFilePath, 0, oss.str().length() + 1);memcpy(strSaveFilePath, oss.str().c_str(), oss.str().length());char *fileName = strSaveFilePath, *tag;for(tag=fileName;*tag;tag++){if (*tag=='\\'){char buf[1000],path[1000];strcpy(buf,fileName);buf[strlen(fileName)-strlen(tag)+1]=NULL;strcpy(path,buf);if (access(path,6)==-1){int npot = 99;npot = mkdir(path);//创建成功返回0 不成功返回-1}}}delete strSaveFilePath;//将DCM图按序列号,移到对应的文件中oss<<vctPathBlock[vctPathBlock.size() - 1];string strSavePath = oss.str();bool bMove = false;bMove = MoveFile(strPath.c_str(), strSavePath.c_str());//cout<<bMove<<endl;}//读取目录下所有的文件void getFiles( string path, vector<string>& files ){//文件句柄long hFile = 0;//文件信息struct _finddata_t fileinfo;string p;if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1){do{//如果是目录,迭代之//如果不是,加入列表if((fileinfo.attrib & _A_SUBDIR)){if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)getFiles( p.assign(path).append("\\").append(fileinfo.name), files );}else{files.push_back(p.assign(path).append("\\").append(fileinfo.name) );}}while(_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}int _tmain(int argc, _TCHAR* argv[]){string strPath = "D:\\Dtest16\\DICOM\\CT"; //1vector<string> vctFilePath;getFiles(strPath, vctFilePath);for(int i = 0; i < vctFilePath.size(); i++){MoveDcmFile(vctFilePath[i]);}if(NULL != pFileFormat){delete pFileFormat;}return 0;}
0 0
- DCM图--按SeriesNumber进行分类
- DCM
- 使用dcm4che3对jpeg压缩的dcm文件进行解压
- 把国家按洲分类进行人口统计
- DCM概述
- DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档
- OpenCV神经网络进行分类
- 利用libsvm进行分类
- 对情况进行分类
- 对数据进行分类
- 利用距离进行分类
- 使用libsvm进行分类
- 文本进行分类
- 利用keras进行分类
- 评论进行分类
- 对list进行分类
- weka进行分类
- 通过Map进行分类
- 详解ExplosionField的使用,实现View的粉碎效果
- 使用jersey实现应用服务器和图片服务器分离
- 小明的骰子
- hihocoder-1050 树中的最长路(dfs)
- Android基础记录
- DCM图--按SeriesNumber进行分类
- IPv6 NDP邻居发现协议 1
- 大话数据结构-程杰著 数据结构树的学习(部分)
- 快速掌握 Android Studio 中 Gradle 的使用方法
- href=”#”与javascript:;与javascript:void(0)的比较
- 勾股定理
- JQuery按照form上传文件+asp.net后台处理(一)
- 机器学习之Python安装和numpy配置
- Use Of Cursors And Parallel Cursors In SAP ABAP