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

时间:2018-09-10 15:35:30

标签: opencv

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

vector<FColor> ColorBuffer;

其中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::Vec3d?还是我的逻辑有误?

1 个答案:

答案 0 :(得分:1)

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

ColorBuffer[i + j]

您应该使用类似

ColorBuffer[i + j*Width]