2

我的问题类似于std::vector 的 cv::Mat ... 我该怎么做?

我需要一个矩阵,其中每个元素都是一个 std::vector。该矩阵是对一系列相同大小的图像(如视频)进行计算的输出。许多计算都是典型的 cv 函数(转换为灰度、框过滤器等),然后将像素的值添加到向量中。我事先不知道我将拥有多少张图像,无论如何,我不能使用通道概念,因为图像可能超过 512 张。

建议的答案之一是使用指针垫。因此,如果我尝试以下方法,它会起作用吗?

这将在 Windows 机器上,我知道指针大小为 INT-PTR 64 位宽。然后我可以使用 CV_64 但只定义了 CV_64F。因为我不会用这个矩阵做任何计算,我可以用它来存储指针吗?我在想,在读取第一张图像之前,我将获取大小,创建此矩阵,使用“new std::vector”为每个像素创建向量并将该指针存储在元素中。在我的计算循环中,我使用相同的访问偏移量来读取原始图像并将输出存储在向量中。完成向量后,我需要在释放 cv::mat 之前删除它们。

我感谢那些比我更了解 opencv 的人提供的任何意见——这真的来自第一个使用 opencv 的应用程序。

4

1 回答 1

2

尝试

cv::Mat_<your_type>

http://docs.opencv.org/modules/core/doc/basic_structures.html#id7

尤其是:

To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter 

有一个很好的例子,你可以使用你自己的Vec的“混合” (假设每个元素的数组/向量的大小是固定的),或者如果你真的需要你可以使用std::vector.

于 2013-07-08T07:09:04.033 回答