由于我是opencv的绝对初学者,我一直在努力使用这段代码将彩色图像从字节数组加载到opencv矩阵。显示的结果是灰色图像而不是所需的颜色。
从3通道彩色图像的原始数据加载Opencv Matrix。代码如下:
uchar image_data[200*200*3];
for(int i=0;i<200;i++)
for(int j=0;j<200;j++)
{ image_data[i*200*3+j]=255;
image_data[i*200*3+j+1]=0;
image_data[i*200*3+j+2]=0;
}
cv::Mat image_as_mat(Size(200,200),CV_8UC3,image_data);
namedWindow("DisplayVector2",CV_WINDOW_AUTOSIZE);
imshow("DisplayVector2",image_as_mat);
waitKey(0);
答案 0 :(得分:2)
你的for循环在数组中放错了值。您在循环中覆盖数组值。据我了解,你希望你的图像是红色的。像这样改变你的for循环
for(int i = 0; i <200; i++)
{
for(int j = 0; j < 200; j++)
{
image_data[i*3*200 + j*3 + 0] = 255;
image_data[i*3*200 + j*3 + 1] = 0;
image_data[i*3*200 + j*3 + 2] = 0;
}
}