我在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