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相结合,解决了这个问题。非常感谢。