首页 > 其他分享 >ITK 实例6 RGB图像像素色彩成分的访问

ITK 实例6 RGB图像像素色彩成分的访问

时间:2023-08-16 14:25:31浏览次数:42  
标签:ITK PixelType 图像 PrintType 像素 RGB reader ImageType itk

 1 #include "itkImage.h"
 2 #include "itkImageFileReader.h"
 3 //为了使用 itk::RGBPixel 类,包含头文件
 4 #include "itkRGBPixel.h"
 5 //在 ITK 中如何表示 RGB 图像。
 6 int main( int , char * argv[] )
 7 {
 8   //RGBPixeld 类的使用是基于用来代表红、绿和蓝的像素成分的类型之上的
 9   //定义RGBPixel类型的PixelType对象
10   typedef itk::RGBPixel< unsigned char >    PixelType;
11   //然后将这个类型PixelType对象作为图像中的像素模板参数,得到ImageType对象
12   typedef itk::Image< PixelType, 3 >   ImageType;
13   //使用itk::ImageFileReader 对象从文件中读取图像
14   typedef itk::ImageFileReader< ImageType >  ReaderType;
15   //实例化ReaderType的读取对象reader
16   ReaderType::Pointer reader = ReaderType::New();
17   //设置RGB图像索引
18   const char * const filename = "789.jpg";
19   //图像读取
20   reader->SetFileName( filename );
21   reader->Update();
22   //reader读取到的图像数据输出到image
23   ImageType::Pointer image = reader->GetOutput();
24   const ImageType::IndexType pixelIndex = {{25,35,0}};
25  
26   //使用 RGBPixel 类提供的方法来执行对像素色彩成分的访问
27   PixelType onePixel = image->GetPixel( pixelIndex );
28   PixelType::ValueType red   = onePixel.GetRed();//提取红色部分
29   PixelType::ValueType green = onePixel.GetGreen();//提取绿色部分
30   PixelType::ValueType blue  = onePixel.GetBlue();//提取蓝色部分
31   // Software Guide : EndCodeSnippet
32   std::cout << "method1" << std::endl;
33   std::cout << "Pixel values from GetRed,GetGreen,GetBlue:" << std::endl;
34   std::cout << "Red = "
35             << itk::NumericTraits<PixelType::ValueType>::PrintType(red)
36             << std::endl;
37   std::cout << "Green = "
38             << itk::NumericTraits<PixelType::ValueType>::PrintType(green)
39             << std::endl;
40   std::cout << "Blue = "
41       << itk::NumericTraits<PixelType::ValueType>::PrintType(blue)
42       << std::endl << std::endl;
43  
44  
45   //由于 itk::RGBPixel 从 itk::FixedArray 类继承了 [ ] 操作
46   //以下方法也可执行对像素色彩成分的访问
47   red   = onePixel[0];  // extract Red   component
48   green = onePixel[1];  // extract Green component
49   blue  = onePixel[2];  // extract Blue  component
50  
51   std::cout <<  "method2" << std::endl;
52   std::cout << "Pixel values:" << std::endl;
53   std::cout << "Red = "
54             << itk::NumericTraits<PixelType::ValueType>::PrintType(red)
55             << std::endl;
56   std::cout << "Green = "
57             << itk::NumericTraits<PixelType::ValueType>::PrintType(green)
58             << std::endl;
59   std::cout << "Blue = "
60             << itk::NumericTraits<PixelType::ValueType>::PrintType(blue)
61             << std::endl;
62   return EXIT_SUCCESS;
63 }

标签:ITK,PixelType,图像,PrintType,像素,RGB,reader,ImageType,itk
From: https://www.cnblogs.com/ybqjymy/p/17633891.html

相关文章

  • ITK 实例8 从缓冲器中输入图像数据
    1#include"itkImage.h"2#include"itkImportImageFilter.h"//包含ImportImageFilter(图像像素数据导入缓冲器)类的头文件3#include"itkImageFileWriter.h"4//这个例子阐述了如何将数据输入到itk::Image类中。这在同其他软件系统相连时更加有5//用。许多......
  • ITK 实例1 ITK环境测试
    1#include"itkImage.h"//包含图像类的头文件2#include<iostream>34intmain()5{6//创建一个三维、像素是无符号短字符数据类型的图像7typedefitk::Image<unsignedshort,3>ImageType;8//调用New()操作创建图像并将结果分配到itk::......
  • ITK 实例2 创建图像(手动创建一个itk::Image类)
    1#include"itkImage.h"//图像类的头文件23//这个例子阐述了如何人为地创建一个itk::Image类,下面是对图像类进行实例化、声明4//和创建的最简单程序代码。56intmain(int,char*[])7{8//创建一个三维、像素是无符号短字符数据类型的图像9typ......
  • RGBA alpha 透明度混合算法
        Alpha透明度混合算法,网上收集整理,分成以下三种:一、R1,G1,B1,Alpha1为前景颜色值,R2,G2,B2,Alpha2为背景颜色值,则    前景色 R=R1*Alpha1+R2*Alpha2*(1-Alpha1);          G=G1*Alpha1+G2*Alpha2*(1-Alpha1); ......
  • VTK 实例26:将BMP类型的RGB图像转换为灰度图像
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkRenderWindow.h>8#include<vtk......
  • 使用FFmpeg进行yuv420转rgba
    讲解一下将获取到视频数据,进行rgb转码,并且进行相应的缩放操作//存放解码过后的数据unsignedchar*decode_data;intdecode_size=0;/***解码AVFrame中的yuv420数据并且转换为rgba数据**@paramframe需要解码的帧结构*@paramsrc_width需要转换的帧宽度*......
  • 什么是前端开发领域中的屏幕像素密度 Pixel Density
    当谈论到前端开发中的像素密度(PixelDensity),实际上是在讨论设备屏幕的像素密度,也称为像素密度或PPI(PixelsPerInch)。像素密度是指屏幕上每英寸(2.54厘米)所包含的像素数量。它是一个重要的概念,因为不同的设备在相同尺寸的屏幕上可能拥有不同的像素密度,从而影响显示效果和图像质量。......
  • python打包库nuitka测试 是否和c++的速度差不多
    nuitka一个打包py脚本的库原理是把py代码转成c++代码再重新编译宣传的优点是打包的程序速度快占用空间小用了一些时间了突然想测试一下性能是否和宣传的一样写了一个输出一百万以内素数个数的脚本 打包成exe结果  不打包执行 说实话挺失望还剩一个优点空间......
  • Linux开发板调用摄像头(V4L2编程,含YUYV解码RGB)
    本文是基于Linux开发板的V4L2摄像头调用程序,包括YUYV解码为RGB,以及将摄像头数据显示在开发板屏幕上。代码未封装,可直接在linux下编译使用。 工作流程:打开设备—>检查和设置设备属性—>设置帧格式—>设置一种输入输出方法(缓冲区管理)—>循环获取数据—>数据解码—>显......
  • 相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完
    本篇文章主要介绍如何使用相机标定,实现世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系。 相机标定内参/畸变系数求解与外参求解代码: (添加:2022-0926)原理介绍如下: 一、世界坐标系转换为相机坐标系相机标定概念:即求解外参旋......