0

我可以从Mat.data指针获取 BGR 数据,但我不知道如何计算数据大小。有人可以帮我吗?谢谢。

4

1 回答 1

1

如果您的矩阵是连续的,我将使用cv::Mat::total() 来获取元素的数量,并使用cv::Mat::elemSize()来获取以字节为单位的矩阵元素大小:

Mat m;
//...

uchar* data = m.data();
auto datasize = m.total() * m.elemSize();

另一种方法可能是(但我不太确定,所以仔细检查一下)来区分cv::Mat::dataendcv::Mat::datastart

auto datasize = m.dataend - m.datastart;

如果您的矩阵不连续,我想您仍然可以使用第一种方法来获取大小,但不要使用memcpy()那么多字节,因为它不会是您的图像数据。

于 2021-02-20T11:41:22.210 回答