ITK-读取/写入图像

news2024/11/19 0:32:59

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

绪论

       在本文中,将介绍如何使用ITK(Insight Segmentation and Registration Toolkit)库来读取和写入图像文件。ITK是一款开源软件库,主要用于医学图像分析。接下来将演示如何读取JPEG图像文件,并将其保存为另一个JPEG文件。这是ITK图像处理的基础操作之一。

环境准备

参见:Windows下用CMake编译ITK及配置测试_itk配置-CSDN博客

功能解析

1.引入必要的头文件:

#include <itkImage.h>
#include <itkImageFileReader.h>
#include <itkImageFileWriter.h>
#include <itkBinaryThresholdImageFilter.h>
#include <itkImageIOFactory.h>
#include <itkPNGImageIOFactory.h>
#include <itkJPEGImageIOFactory.h>

我们需要引入ITK库的头文件,以便使用它们提供的图像读取、写入和处理功能。

2.初始化图像类型和读写器:

typedef itk::Image<unsigned char, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter<ImageType> WriterType;
itk::JPEGImageIOFactory::RegisterOneFactory();
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
  • ImageType 定义了图像的数据类型和维度。这里我们使用 unsigned char 类型的2D图像。
  • ReaderTypeWriterType 分别定义了图像读取器和写入器的类型。
  • itk::JPEGImageIOFactory::RegisterOneFactory() 注册了JPEG格式的IO工厂,以便ITK可以处理JPEG格式的图像文件。
  • ReaderType::Pointer reader = ReaderType::New()WriterType::Pointer writer = WriterType::New() 分别创建了图像读取器和写入器的实例。

3.设置文件名和输入输出:

reader->SetFileName("test.jpg");      //要读取的文件名
writer->SetFileName("output.jpg");    //写入的文件名
writer->SetInput(reader->GetOutput());
  • reader->SetFileName("test.jpg") 设置要读取的图像文件的名称。
  • writer->SetFileName("output.jpg") 设置要写入的图像文件的名称。
  • writer->SetInput(reader->GetOutput()) 将读取器的输出连接到写入器的输入,这样读取的图像可以直接写入到指定文件中。

4.执行读取和写入操作:

try
{
    writer->Update();
}
catch (itk::ExceptionObject &error)
{
    std::cerr << "Error: " << error << std::endl;
    return EXIT_FAILURE;
}
  • writer->Update() 执行写入操作,将读取的图像保存到指定的文件中。
  • 使用 try-catch 块捕获可能的异常,并在发生错误时输出错误信息。

完整代码

#include <itkImage.h>
#include <itkImageFileReader.h>
#include <itkImageFileWriter.h>
#include <itkBinaryThresholdImageFilter.h>
#include <itkImageIOFactory.h>
#include <itkPNGImageIOFactory.h>
#include <itkJPEGImageIOFactory.h>

int main()
{
	// 初始化
	typedef itk::Image<unsigned char, 2> ImageType;
	typedef itk::ImageFileReader<ImageType> ReaderType;
	typedef itk::ImageFileWriter<ImageType> WriterType;
	itk::JPEGImageIOFactory::RegisterOneFactory();
	ReaderType::Pointer reader = ReaderType::New();
	WriterType::Pointer writer = WriterType::New();

	// 设置
	reader->SetFileName("test.jpg");      //要读取的文件名
	writer->SetFileName("output.jpg");    //写入的文件名
	writer->SetInput(reader->GetOutput());

	// 输出
	try
	{
		writer->Update();
	}
	catch (itk::ExceptionObject &error)
	{
		std::cerr << "Error: " << error << std::endl;
		return EXIT_FAILURE;
	}

	std::cout << "Image segmentation completed successfully." << std::endl;
	return EXIT_SUCCESS;
}

测试效果 

       输入和输出一致。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【毕业一年,聊聊什么】

毕业一年&#xff0c;聊聊什么 一&#xff0c;引子 武汉&#xff0c;大雨连连&#xff0c;大雨如柱&#xff0c;大雨倾盆&#xff0c;任性的&#xff0c;傲娇的&#xff0c;一点没有想停的样子。 下雨天&#xff0c;好适合Emo啊&#xff0c;该我了&#xff0c;请允许。 二&…

Meilisearch 安装和使用教程

如今搜索功能已成为几乎所有应用不可或缺的一部分。无论是电商平台、内容管理系统&#xff0c;还是企业内部知识库&#xff0c;用户都期待能够快速、准确地找到他们需要的信息。然而&#xff0c;传统的搜索解决方案往往面临着诸多挑战&#xff1a;响应速度慢、相关性差、难以适…

分享值得推荐的6大磁力搜索器平台,亲测有效!

昨天晚上&#xff0c;隔壁出租屋的小美私信阿星&#xff0c;问哪里能下载到有趣的资源&#xff0c;比如漫画、影音、学习资料等等。 这直接问到了阿星的强项了&#xff01;其实网络上&#xff0c;高手和小白之间&#xff0c;只差一个搜索引擎。 今天阿星想和大家分享几款好用…

常用图片处理操作

静态图片文件转base64 import base64 with open(1.png, rb) as f:source f.read() base64_img base64.b64encode(source)base64转静态图片文件 imgdata base64.b64decode(base64_img)# 将图片保存为文件 with open("new.png", wb) as f:f.write(imgdata)PS:这里…

IT运维管理与运营管理的创新与实践

IT运维管理与运营管理的创新与实践 在信息化飞速发展的今天&#xff0c;IT运维管理与运营管理已成为企业保障业务连续性和提升运营效率的关键环节。随着数字化转型的深入&#xff0c;企业对IT运维管理的要求不断提高。本文结合《IT运维管理与运营管理》文档的内容&#xff0c;…

海南云亿商务咨询有限公司引领抖音电商新纪元

在数字化浪潮汹涌的今天&#xff0c;电商行业迎来了前所未有的发展机遇。作为电商服务领域的佼佼者&#xff0c;海南云亿商务咨询有限公司凭借其专业的团队和丰富的经验&#xff0c;专注于抖音电商服务&#xff0c;助力企业快速布局市场&#xff0c;实现销售增长和品牌提升。 …

基于x86+FPGA+AI轴承缺陷视觉检测系统,摇枕弹簧智能检测系统

一、承缺陷视觉检测系统 应用场景 轴类零件自动检测设备&#xff0c;集光、机、软件、硬件&#xff0c;智能图像处理等先进技术于一体&#xff0c;利用轮廓特征匹配&#xff0c;目标与定位&#xff0c;区域选取&#xff0c;边缘提取&#xff0c;模糊运算等算法实现人工智能高…

运算放大器重要参数详解

运算放大器是一种用于放大电压并实现信号处理和放大的电子设备。以下是运算放大器的一些重要参数及其详解: 增益(Gain): 定义:增益是运算放大器输出电压与输入电压之比,表示运算放大器在输入信号上的放大倍数。重要性:增益决定了信号的放大程度,是运算放大器的基本功能…

工程师这几招降低电机EMI的方法,提高系统电磁兼容性能

通过在电机端子之间放置陶瓷电容器、工模滤波器或BDL滤波器均可抑制差模和共模噪声&#xff0c;以提高系统的EMC性能。工程师在本文详细介绍这几种降低电机EMI的方法。 EMC和EMI背景 电磁干扰(EMI)是系统上的电磁噪声的辐射或感应。与大多数电磁电路组件一样&#xff0c;直流…

用易查分下发《致家长一封信》,支持在线手写签名,一键导出PDF!

暑假来临之际&#xff0c;学校通常需要下发致家长信&#xff0c;以正式、书面的形式向家长传达重要的通知或建议。传统的发放方式如家长签字后学生将回执单上交&#xff0c;容易存在丢失、遗忘的问题。 那么如何更高效、便捷、安全地将致家长一封信送达给每位家长呢&#xff1f…

3-数据提取方法1(json)(6节课学会爬虫)

3-数据提取方法1&#xff08;json&#xff09;&#xff08;6节课学会爬虫&#xff09; 1&#xff0c;Json2&#xff0c;哪里会返回json的数据&#xff08;值得尝试的操作&#xff09;3&#xff0c;Json字符串转换成字典或python类型进行数据提取&#xff08;1&#xff09;Json.…

使用热力图表示联邦学习场景中的客户端数据分布

用于生成热力图&#xff0c;记录过程&#xff0c;方便之后直接使用。 使用场景&#xff1a;联邦学习中显示客户端数据分布&#xff0c;或者显示数据分布的各类其他场景 文章目录 一、代码hot.py使用方法 二、参数解释三、样图关键词 一、代码 写这段代码时主要考虑联邦学习中显…

短视频抓取:成都柏煜文化传媒有限公司

短视频抓取&#xff1a;技术挑战、法律边界与未来趋势 随着移动互联网的迅猛发展&#xff0c;短视频平台如雨后春笋般涌现&#xff0c;成为现代人生活娱乐的重要组成部分。然而&#xff0c;在海量短视频内容中&#xff0c;如何高效、准确地抓取目标视频&#xff0c;成为了一个…

JUC工具类: Semaphore详解

Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量&#xff0c;它允许n个任务同时访问某个资源&#xff0c;可以将信号量看做是在向外分发使用资源的许可证&#xff0c;只有成功获取许可证&#xff0c;才能使用资源。立刀旁 目录 # 带着BAT大厂…

媒体宣发套餐的概述及推广方法-华媒舍

在今天的数字化时代&#xff0c;对于产品和服务的宣传已经变得不可或缺。媒体宣发套餐作为一种高效的宣传方式&#xff0c;在帮助企业塑造品牌形象、扩大影响力方面扮演着重要角色。本文将揭秘媒体宣发套餐&#xff0c;为您呈现一条通往成功的路。 1. 媒体宣发套餐的概述 媒体…

昇思25天学习打卡营第5天|网络与模型相关要素探讨

目录 从 MindSpore 模块中导入nn和ops 定义模型类 模型层 nn.Flatten nn.Dense nn.ReLU nn.SequentialCell nn.Softmax 模型参数 从 MindSpore 模块中导入nn和ops 将 MindSpore 整个模块引入到当前的 Python 脚本里&#xff0c;方便后续运用 MindSpore 所提供的各类功能…

森林防火气象站:守护森林安全的科技利器

在广袤无垠的森林中&#xff0c;火灾一直是威胁森林生态安全的重要因素。为了有效预防和控制森林火灾&#xff0c;科学家们不断研发新技术&#xff0c;而森林防火气象站正是这一领域的重要成果之一。其中&#xff0c;森林防火气象站凭借其强大的功能和独特的设计&#xff0c;在…

餐厅在线点餐小程序源码系统可外卖配送 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代&#xff0c;餐厅在线点餐小程序已成为餐饮行业的重要工具。它不仅为消费者提供了便捷的点餐体验&#xff0c;也为餐厅提高了运营效率和服务质量。小编给大家分享一款餐厅在线点餐小程序源码系统&#xff0c;该系统不仅支持在线点餐&#xff0c;还具…

Python逻辑控制语句 之 循环语句--while循环

1.while 的介绍 让指定的代码 重复 的执行。 应用场景&#xff1a; while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复执行 2.while 的语法 初始条件设置 # 通常是重复执行的 计数器 while 判断条件&#xff1a; # 判断计数器是否达到目标次数 条件…

博途PLC轴工艺对象随动误差监视功能

S7-1200PLC和V90总线伺服通过工艺对象实现定位控制时在组态工艺对象里有这样的随动误差监视功能介绍,关于这个功能,今天我们解读下,工艺对象组态编程可以参考下面文章链接: S7-1200PLC和V90总线伺服通过工艺对象实现定位控制(标准报文3应用)_v90工艺对象3号报文-CSDN博客文…