openCv,从BGR数据向量创建Mat?

openCv,从BGR数据向量创建Mat?,opencv,Opencv,我有一个组成图像的像素数据数组。数据格式如下: 向量颜色缓冲区 其中FColor是如下所示的结构: struct FColor { uint8 B; uint8 G; uint8 R; uint8 A; }; 我有图像大小(宽度、高度) 我需要做的是将这些数据转换为cv::Mat 我正在努力: cv::Mat tester = cv::Mat(Width, Height, CV_8UC3); for (in

我有一个组成图像的像素数据数组。数据格式如下:

向量颜色缓冲区

其中FColor是如下所示的结构:

struct FColor
    {
        uint8 B;
        uint8 G;
        uint8 R;
        uint8 A;
    };
我有图像大小(宽度、高度)

我需要做的是将这些数据转换为cv::Mat

我正在努力:

cv::Mat tester = cv::Mat(Width, Height, CV_8UC3);
    for (int i = 0; i < Width; i++)
    {
        for (int j = 0; j < Height; j++)
        {
            cv::Vec3d px(ColorBuffer[i + j].B, ColorBuffer[i + j].G, ColorBuffer[i + j].R);

            tester.at<cv::Vec3d>(j, i) = px;

        }
    }
cv::Mat测试器=cv::Mat(宽度、高度、cv_8UC3);
对于(int i=0;i

但这给了我一个混乱的图像。我哪里出了问题?我应该用其他东西代替
cv::Vec3d
?还是我的逻辑有误?

ColorBuffer中某个点的索引似乎不正确,而不是

ColorBuffer[i + j]
你应该使用类似于

ColorBuffer[i + j*Width]

非常感谢。这与使用cv::Vec3b代替Vec3d相结合,解决了这个问题。非常感谢。