gpt4 book ai didi

c++ - 使用 at(i, j) 访问 cv::Mat 的元素。是 (x,y) 还是 (row,col)?

转载 作者:IT老高 更新时间:2023-10-28 21:37:17 32 4
gpt4 key购买 nike

当我们访问 cv::Mat 结构的特定元素时,我们可以使用 mat.at(i,j) 访问位置 i,j 的元素。然而,尚不清楚 (i,j) 是指矩阵中的 x,y 坐标,还是指第 i 行第 j 列。

最佳答案

OpenCV 与许多其他库一样,以行优先顺序处理矩阵访问。这意味着每个访问都被定义为 (row, column)。请注意,如果您使用图像的 x 和 y 坐标,如果 y 是您的垂直轴,则这将变为 (y, x)

大多数矩阵库在这方面是相同的,访问是 (row, col) 以及在例如 Matlab 或 Eigen(C++ 矩阵库)中。

这些应用程序和库的不同之处在于数据在内存中的实际存储方式。 OpenCV 将数据以行优先顺序存储在内存中(即行在前),而例如 Matlab 将数据以列优先顺序存储在内存中。但是,如果您只是这些库的用户,并通过 (row, col) 访问器访问数据,那么您将永远不会真正看到 内存存储顺序.

关于c++ - 使用 at<float>(i, j) 访问 cv::Mat 的元素。是 (x,y) 还是 (row,col)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184053/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com