vtk中的图片传给opencv的mat操作

本文介绍如何将VTK库获取的图像转换为OpenCV可用格式,并进行必要的图像翻转处理以匹配坐标系差异。此外,还介绍了如何使用vtkChangeImageInformation调整图像属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vtkImageData* image = windowToImageFilter->GetOutput(); 
// Check number of components. 
const int numComponents =  image->GetNumberOfScalarComponents(); // 3
// Construct the OpenCv Mat 
int dims[3]; 
image->GetDimensions(dims); 
cv::Mat openCVImage(dims[0], dims[1], CV_8UC3, image->GetScalarPointer()); // Unsigned int, 3 channels 

cvtColor(openCVImage, openCVImage, CV_BGRA2GRAY); 

// Flip because of different origins between vtk and OpenCV 
cv::flip(openCVImage,openCVImage, 0); 

I think vtk is giving me the image in BGRA, so I perform a conversion from BGRA to GRAY. Doing it to RGB did not give me the expected results, but since I just need a black and white image I did not did deeper.
If you need to keep colors, just figure out if vtk is storing the image in RGBA, BGRA or how and transform into RGB.
网上搜了一下,用vtk得到的图像传给opencv使用,资料里说明,vtk的图像可能是RGBA的4通道,所以用转换一下成灰度图像。并且两个库得到图像的坐标也不一样,所以要对图片进行翻转操作。

再来对vtk图像进行了解,vtkChangeImageInformation可以作为管线中的一个filter来修改图像信息。利用这个filter可以修改图像的原点,像素间隔以及范围起点(extent),另外还可以对图像平移缩放等操作。【2】

参考资料:
【1】

http://vtk.1045678.n5.nabble.com/From-vtkImageData-to-Iplimage-OpenCV-td5716020.html
【2】

http://blog.youkuaiyun.com/shenziheng1/article/details/54646862

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值