是否可以拥有一个cv ::垫子,其中包含标量而不是标量的指针

Is it possible to have a cv::Mat that contains pointers to scalars rather than scalars?

本文关键字:标量 包含 指针 拥有 有一个 cv 是否 垫子      更新时间:2023-10-16

我正在尝试在VTK(3D可视化库)和OpenCV(图像处理库)之间桥接。

目前,我正在做以下操作:

vtkWindowToImageFiltervtkRenderWindow(场景)转换为vtkImageData(渲染窗口的像素)。

i然后必须将vtkImageData的每个像素复制到cv::Mat中进行处理,并使用OpenCV显示。

此过程需要实时运行,因此冗余副本(在ImageData中进入Mat)会严重影响性能。我想直接从场景像素到cv::Mat映射。

随着场景的变化,我希望cv::Mat自动引用场景。本质上,我想要一个cv::Mat<uchar *>,而不是cv::Mat<uchar>。那有意义吗?还是我过度复杂化?

vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New();
int dims[3];
image->GetImageData()->GetDimensions(dims);
cv::Mat matImage(cv::Size(dims[0], dims[1]), CV_8UC3, image->GetImageData()->GetScalarPointer());`

我成功地将vtkimagedata*直接实施到cv::Mat指针数组中..

一些功能,例如 cv::flipmatImage -= cv::Scalar(255,0,0)

直接在vtkimagedata上工作。

但是诸如cv::resizecv::Canny之类的功能不起作用。