实例1:opencv对单张DCM文件的读取并显示

#include <iostream>
#include <io.h>  // 当中含有_finddata_t
#include <string>
#include <vector>#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>#include <vtkSmartPointer.h>
#include <vtkImageViewer2.h>
#include <vtkImageCast.h>
#include <vtkDICOMImageReader.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkImageData.h>
#include <vtkCoordinate.h>using namespace std;
using namespace cv;// 读入一个CT图,返回它的像素矩阵,使用OpenCV的Mat类型返回
// VTK读取DICOM图像并将像素值转给OpenCV的Mat对象
void dicomread(string inputFilename, Mat& img, vtkSmartPointer<vtkDICOMImageReader>& reader)
{img.create(512, 512, CV_32SC1);vtkSmartPointer<vtkImageCast> imageCast =vtkSmartPointer<vtkImageCast>::New();reader->SetFileName(inputFilename.c_str());reader->Update();imageCast->SetInputConnection(reader->GetOutputPort());imageCast->SetOutputScalarTypeToInt();imageCast->Update();// 图像的基本信息int dims[3];reader->GetOutput()->GetDimensions(dims);//图像的像素值for (int k = 0; k < dims[2]; k++){for (int j = 0; j < dims[1]; j++){for (int i = 0; i < dims[0]; i++){//转换数据类型,使用imagecast转到double(或float)int* pixel =(int*)(imageCast->GetOutput()->GetScalarPointer(i, j, k)); // 第i列第j行的像素值img.at<int>(j, i) = int(*pixel); // 第j行第i列的像素值}}}
}
//可视化DICOM图像
void showdicom(Mat I)
{double maxx = 0, minn = 0;double* max = &maxx;double* min = &minn;I.convertTo(I, CV_64FC1);minMaxIdx(I, min, max);for (int i = 0; i < I.rows; i++){for (int j = 0; j < I.cols; j++){I.at<double>(i, j) = 255 * (I.at<double>(i, j) - minn) * 1 / (maxx - minn);}}minMaxIdx(I, min, max);for (int i = 0; i < I.rows; i++){for (int j = 0; j < I.cols; j++)I.at<double>(i, j) = (I.at<double>(i, j) - minn) * 1 / (maxx - minn);}//cout << I <<endl;  //I为图像的像素值imshow("DICOM Image", I);waitKey(0);
}int main()
{//要读取的CT数据文件名string filename = "1066244_20110617_CT_102_215_001.dcm" ;Mat I1;//I1为原图,G1为转化图vtkSmartPointer<vtkDICOMImageReader> reader =vtkSmartPointer<vtkDICOMImageReader>::New();// 读入dicom图dicomread(filename, I1, reader);//反转图像flip(I1, I1, 0);//显示得到的Mat对象I1的信息*(单通道 大小512*512)cout << I1.channels() << "  " << I1.size() << endl;showdicom(I1);
}

要读取的dcm文件放在工程目录下:

可见读取的为单通道的512*512像素大小的图像:

本例程配套素材见源码整理文章下载(点击进入)

Opencv系列1_opencv对单张DCM文件的读取并显示相关推荐

  1. 数字图像处理(极简) 第三章 BMP文件的读取与显示(docx)

    建议先修课程:高等数学(微积分).线性代数. 参考书目: 1.图像工程(上册)--图像处理(第4版) 章毓晋 清华大学出版社 链接:https://pan.baidu.com/s/1hEMGRUotQ ...

  2. CT的原始图像.dcm文件的读取

    在做CT图像的深度学习研究时,需要用到大量的CT数据,我从TCIA上下载的CT图像是.dcm文件的,每个.dcm文件代表一个slice,如图所示,下载的是Head-neck数据, 用matlab读取时 ...

  3. 《OpenCV 4开发详解》图像的读取与显示

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  4. OpenCV最基本的测试代码-图像的读取与显示

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 配置完OpenCV之后,都要先进行测试,下面的代 ...

  5. matlab 读取csv_利用Pytorch进行数据加载1--CSV文件的读取和显示

    import os # 文件处理模块,用于处理文件和目录 import torch # pytorch的深度学习框架 import pandas as pd #人脸识别库 from skimage i ...

  6. Android开发笔记(一百四十)Word文件的读取与显示

    读取纯文本 现在手机的用途越来越广泛,从原来只有通讯功能的电话,到拍照手机,到上网手机,再到办公手机,可谓是无所不能了.说到办公,除了收发邮件,还有个频繁使用的功能,就是处理word文件.电脑上的of ...

  7. opencv支持多种流行视频格式文件的读取

    写入应该是只支持avi,因为其他格式一般都是压缩格式,压缩格式一般都有帧间压缩,也就是不能只写一帧,可以保存为avi后,转码. 以AVI结尾的视频文件有以下几种: 1.非压缩格式的AVI文件(或是MP ...

  8. BMP文件的读取与显示

    有三个函数能够完毕这一功能 1.BitBlt BitBlt 用于从原设备中复制位图到目标设备 void CMFCApplication1View::OnDraw(CDC* pDC) {CMFCAppl ...

  9. vivado下ila文件的读取和显示

    保存ila文件 file-->export-->export ila_data.可以保存为ila格式或者vcd格式 (可以在modelism下转化为wlf文件后打开查看波形.) 打开保存后 ...

  10. CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用

    真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...

最新文章

  1. 关于less在DW中高亮显示问题
  2. webpack配置alias别名设置
  3. 由浅入深解读Redis高级能力及性能调优
  4. springmvc+jsp引用本地图片文件
  5. 中国五大顶级域名7月第一周增3.2万 美国减7.3万
  6. 关于Webview如何自动登录保存登录信息
  7. 時鐘,天氣預報--js
  8. MySQL中的information_schema
  9. 小甲鱼python第六讲_小甲鱼Python第十七讲课后习题(示例代码)
  10. 【渝粤题库】陕西师范大学500901 基础物理专题(力、热) 作业(专升本)
  11. python中读取txt文件、统计其中所有字母出现的频度_python——pandas练习题6-10
  12. shiro 30分钟未操作_大道至简:请笑纳股票精华知识:30分钟k线操作,用最简单的超短线炒股方法赚大钱!...
  13. miui怎么用第三方图标包_Burn安卓手机图标包 手机美化从图标开始
  14. vue 自定义marquee横向无缝滚动组件
  15. 彻底清理该死的搜狗输入法
  16. python调用foxmail 发邮件_使用Python发送邮件
  17. 轻快PDF阅读器阅读pdf文件步骤
  18. 流量都去哪儿了? 流量不清零后“消耗快”
  19. springmvc全局异常处理
  20. C++打开网页,发起QQ对话,调用外部exe程序

热门文章

  1. 压紧力变化的平均值matlab,基于MATLAB遗传算法的汽车拉式离合器膜片弹簧结构参数优化设计...
  2. 这就是江湖——浅析芯片架构演变的爱恨情仇
  3. 回归分析常数项t值没有显著异于零怎么办_线性回归分析思路总结!简单易懂又全面!...
  4. html js点赞功能实现,利用浏览器的JS代码实现QQ空间自动点赞功能
  5. 2:0战胜Dota2世界冠军OG,OpenAI发起全网挑战,不服来战!
  6. 非线性光纤光学_片上光学频率梳:可产生光子微波,应用于卫星通信和5G网络!...
  7. 推荐Python、Django中文文档地址
  8. Android ViewHolder的理解
  9. ISMS信息安全管理体系与信息系统安全等级保护标准的异同点
  10. 在Eclipse中安装Subclipse