访问OpenCV CV_8UC1 cv :: Mat的元素

时间:2012-10-03 08:52:26

标签: c++ opencv

我有一个类型为CV_8UC1(8位单通道图像)的cv :: Mat,我想使用at<>运算符访问元素,如下所示:image.at<char>(row, column)。但是,当转换为int(int) image.at<char>(row, column)时,某些值会变为负值,例如255变为-1。

这可能是一个愚蠢的问题,但我不知道为什么会发生这种情况以及将条目转换为int的更好方法。

提前致谢!

2 个答案:

答案 0 :(得分:20)

你必须指定元素是 unsigned char ,介于0到255之间,否则它们将是char(签名),从-128到127.转换将是这样的:

(int) image.at<uchar>(row,column);

答案 1 :(得分:5)

矩阵类型CV_8 UC 1代表无符号字符。

所以,你必须写

image.at<unsigned char>(row, column)