9

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

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

提前致谢!

4

2 回答 2

25

您必须指定元素是unsigned char,介于 0 和 255 之间,否则它们将是 char(有符号),从 -128 到 127。转换将是这样的:

(int) image.at<uchar>(row,column);
于 2012-10-03T09:40:44.660 回答
5

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

所以,你必须写

image.at<unsigned char>(row, column)
于 2012-10-03T09:08:48.030 回答