OpenCV 将垫子中的值检索为整数

OpenCV retrieving value from a mat into an integer

我想创建一个恰好包含 100 个值的一维数组,并在每个索引处存储另一个数组的索引。如果我要使用 std::vector<int16_t> someVector,我如何确保 someVector 只有 100 个值,并且可能在位置 48 添加第一个值,如 someVector[48] = 29322,等等。

作为替代方案,我尝试创建一个 Mat someArray(1,100,CV_16UC1,Scalar(9999)) 的一维垫子。现在,当我尝试使用 int retrievedValue = someArray.row(0).col(48) 检索索引 48 处的值时,它说无法从 Mat 转换为 int

我意识到我正在为一些非常简单的事情做一些疯狂的事情,但请帮忙。

当你初始化向量时,你可以设置它的大小:

std::vector<int16_t> someVector(100);

这样,它将创建为包含 100 个元素的数组。但是不要忘记向量的大小以后可能会改变。

至于 Mat,像 row() 或 col() 这样的运算符会为您提供初始矩阵的子矩阵。因此,您创建的代码将为您 return 一个 1x1 矩阵,而不是一个短矩阵。如果你想访问矩阵中的一个元素,它应该是:

int retrievedValue = someArray.at<ushort>(0,48);