OpenCV 如何为imencode编码原始图像信息



我在C++。

假设某个神秘的函数getData()它只返回图像的像素信息。

即仅指向没有元数据的像素信息的char*(没有宽度、长度、高度或任何形式的通道(

因此,我们有:

unsigned char *raw_data = getData();

然后我们有另一个函数,它返回一个包含元数据的结构。

例如:

struct Metadata {
    int width;
    int height;
    int channels;
    //other useful fields
}

我现在需要以正确的方式预置对象元数据以创建有效的图像缓冲区。

所以而不是[pixel1, pixel2, pixel3 ...]

例如,我会[width, height, channels, pixel1, pixel2, pixel3...]

附加

元数据的正确顺序是什么,宽度、高度和通道是否足够?

您可以使用 Mat 构造函数从数据和元数据创建图像

Mat:

:Mat(int rows, int cols, int type, void* data, size_t 步骤=AUTO_STEP(;文档在这里

cv::Mat image = cv::Mat(height, width, CV_8UC3, raw_data);

type参数指定通道数和数据格式。例如,典型的 RGB 图像数据unsigned char,通道数3,因此其类型 = CV_8UC3

可用的 OpenCV 垫类型定义为 cvdef.h

最新更新