将 CVD 图像转换为彩色 OpenCV 图像

Posted

技术标签:

【中文标题】将 CVD 图像转换为彩色 OpenCV 图像【英文标题】:Convert a CVD image to a Color OpenCV image 【发布时间】:2012-03-30 16:15:57 【问题描述】:

我正在使用现有的代码库,该代码库在处理之前从网络摄像头创建 CVD images。我的目标是在其余处理发生之前在此图像上运行标记检测以实现增强现实,我计划使用ArUco 执行此操作。问题是 ArUco 接收 OpenCV 图像以检测标记。

我正在考虑通过手动访问 CVD 图像的每个像素并将 RGB 值粘贴到新的 OpenCV 图像中来从 CVD 图像手动创建此 OpenCV 图像。我对使用 C++ 不太熟悉,但肯定有更好的方法吗?

【问题讨论】:

【参考方案1】:

我使用这样的东西。 myImage 的类型是(自定义)图像类型,它将图像的每个像素的 3 个字节存储在内存的连续字节中,myImage.data() 是指向该内存开始的指针。如果您的 CVD 图像(我不熟悉)以类似的方式布局,您也可以这样做。

cv::Mat image(rows, cols, CV_8UC3, myImage.data());

【讨论】:

是的,如果可能的话,您肯定希望在不复制的情况下包装图像。 这听起来正是我想要做的。根据 CVD 图像文档,我可以使用 [] 运算符取消引用每个像素的值,但我似乎无法找到如何获取图像的起始内存块。从您上面的代码中,我猜测行 = 图像宽度,列 = 高度和 CV_8UC3 是图像格式?是否有上述功能的文档,以便我可以尝试找出适用的图像格式? 查看 opencv.itseez.com 的文档,并使用 &image[0,0] 找到第一个元素的地址。 CV_8UC3代表无符号,8位(uchar是标准图像类型),3通道(RGB)。

以上是关于将 CVD 图像转换为彩色 OpenCV 图像的主要内容,如果未能解决你的问题,请参考以下文章

opencv彩色图像到greycode转换错误

在opencv中,如何将灰度图像复制并缩放为另一个彩色图像

使用 FreeImage 库读取 gif 彩色图像并将其转换为 OpenCV Mat

如何使用 OpenCV C++ 将 24 位深度的 PNG 图像转换为 8 位深度的 PNG 图像

OpenCV Python equalizeHist 彩色图像

使用 OpenCV 将光栅图像转换为矢量图形?