使用三 channel Mat我们可以访问像
这样的元素Mat draw(480, 480, CV_8UC3);
Vec3b pix(255,0,0);
draw.at<Vec3b>(i,j)=pix;
但是在单 channel Mat的情况下就像
Mat draw(480, 480, CV_8UC1);
如何访问 Mat 元素。我已经尝试过类似的事情
draw.at<float>(i,j)=255;
但结果错误。在上述情况下我错了吗?,任何帮助将不胜感激......
提前致谢..............
最佳答案
那个draw.at<float>(i,j)=255;
应该是
draw.at<uchar>(i,j)=255;
您已将 Mat 声明为 8 位无符号字符类型,1 个 channel :
Mat draw(480, 480, CV_8UC1);
因此尝试将 4 字节数量写入单字节容器不仅会导致不正确的结果,而且可能会损坏其他数据结构。
以下内容将把 (255.0) 写入 4 个字节而不是 1:
draw.at<float>(i,j)=255;
关于opencv - 垫子单 channel 元件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064582/