gpt4 book ai didi

c++ - 什么是连续数组?

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:22 26 4
gpt4 key购买 nike

OpenCV documentation , 提到了连续数组。

"It makes sense to check whether all the input/output arrays are continuous, namely, have no gaps at the end of each row."

每行末尾没有空隙是什么意思。有人可以举例说明吗?

最佳答案

在我看来,更好的词是“连续”。

位图有一个“步幅”的概念。 “步幅”使位图/像素图符合底层硬件或软件的特定对齐限制。 “步幅”(也称为“间距”)是一个扫描线的第一个字节与下一个扫描线的第一个字节之间的距离。位图/像素图数组的总大小是间距乘以行数。

出于多种原因,间距不必与“sizeof(pixel) * width”相同。

第一个原因是必须对齐数据。例如,当一个像素为 3 字节时,扫描线必须按 4 字节对齐,那么一个 3 像素宽的位图将包含每条扫描线 9 字节的像素数据,但对齐方式将四舍五入到最接近的较高倍数4,这使得它的间距为 12 字节。最后的“额外”数据会使每个扫描线在您发布的描述中不“连续”。

另一个原因是当你有一个更大的位图时,比如一张 1024x1024 的图片,你从中提取一个子图片,比如一个 128x64 的区域。与其复制数据,不如将数据与原始位图共享,然后将“宽度”设置为128像素,“高度”设置为64像素,将“数据”指针设置为指向子图的第一个像素区域,并将步幅/间距设置为 1024 像素位图的步幅/间距——这样一来,您可以在同一位图数据中指向多个不同大小的区域。

关于c++ - 什么是连续数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107165/

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