简体   繁体   English

访问OpenCV CV_8UC1 cv :: Mat的元素

[英]Accessing elements of OpenCV CV_8UC1 cv::Mat

I have a cv::Mat of type CV_8UC1 (8-bit single channel image) and I would like to access elements using the at<> operator as follows: image.at<char>(row, column) . 我有一个类型为CV_8UC1(8位单通道图像)的cv :: Mat,我想使用at<>运算符访问元素,如下所示: image.at<char>(row, column) However, when casting to int : (int) image.at<char>(row, column) , some values become negative, eg, 255 becomes -1. 但是,当转换为int(int) image.at<char>(row, column) ,某些值变为负数,例如,255变为-1。

This might be a stupid question, but I can't tell why this happens and what would be a better way to convert the entries to int . 这可能是一个愚蠢的问题,但我不知道为什么会发生这种情况以及将条目转换为int的更好方法。

Thanks in advance! 提前致谢!

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

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

In the matrix type CV_8 UC 1 stands for Unsigned Char. 在矩阵类型CV_8中, UC 1代表无符号字符。

So, you have to write 所以,你必须写

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM