c++ - 如何定义和使用用户类型的opencv mat

标签 c++ windows opencv

我的问题类似于 a cv::Mat of std::vector ... how do I?

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

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

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

我很感谢那些比我更了解 opencv 的人提供的任何意见 - 这实际上是来自 opencv 的第一个应用程序。

最佳答案

尝试

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 的“混合” (假设每个元素的数组/vector 的大小是固定的),或者如果您确实需要,可以使用 std::vector

关于c++ - 如何定义和使用用户类型的opencv mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17519279/

相关文章:

c++ - 32 位指针(在 32 位计算机上)如何查找 1 TB 硬盘中的数据?

c++ - 无法读取包含→的wstrings并打印输入的unicode字符

ruby - 在 Ruby 中监视 Windows 上的修改文件

opencv - 很好的功能,可以将图像与该图像的捕获进行比较

python - 如何为 Python 和 Ubuntu 安装 OpenCV 2.4.7

python - 使用python opencv播放视频文件

c++ - 指针变量在数组内使用float计算平均值C++

C++输入出错

.net - 是否可以构建双击时不显示控制台窗口的控制台应用程序?

C++ 优先级和关联性