使用三通道Mat,我们可以访问像
这样的元素Mat draw(480, 480, CV_8UC3);
Vec3b pix(255,0,0);
draw.at<Vec3b>(i,j)=pix;
但在单通道Mat的情况下
Mat draw(480, 480, CV_8UC1);
如何访问Mat元素。我已经尝试了一些像
这样的东西 draw.at<float>(i,j)=255;
但错误的结果。在上述情况下我错了吗?,任何帮助都会赞赏.....
提前致谢.............
答案 0 :(得分:3)
draw.at<float>(i,j)=255;
应该是
draw.at<uchar>(i,j)=255;
您已将Mat声明为8位无符号字符,1个频道:
Mat draw(480, 480, CV_8UC1);
因此尝试将4字节数量写入单个字节容器不仅会导致错误的结果,而且可能会导致其他数据结构的错误。
以下是将(255.0)写入4个字节而不是1:
draw.at<float>(i,j)=255;
答案 1 :(得分:1)
如果你想使用CV_8UC1,那么访问Mat中的元素就像这样
(draw.at<Vec3b>(i,j)).val[k]=255;
其中K是通道号(0到3)