C++ 什么是连续数组?

C++ 什么是连续数组?,c++,arrays,opencv,C++,Arrays,Opencv,在本文中,提到了连续数组 检查是否所有输入/输出数组都是连续的,也就是说,每行末尾都没有间隙,这是有意义的 每行末尾没有间隙是什么意思。有人能举例说明吗?在我看来,一个更好的词应该是“连续的” 位图有“跨步”的概念。“跨步”使位图/pixmap符合底层硬件或软件的特定对齐限制。“跨距”(也称为“间距”)是一条扫描线的第一个字节与下一条扫描线的第一个字节之间的距离。位图/pixmap数组的总大小是基音与行数的乘积 音高不必与“sizeof(像素)*宽度”相同,原因有几个 第一个原因是当数据必须对齐

在本文中,提到了连续数组

检查是否所有输入/输出数组都是连续的,也就是说,每行末尾都没有间隙,这是有意义的

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

在我看来,一个更好的词应该是“连续的”

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

音高不必与“sizeof(像素)*宽度”相同,原因有几个

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

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

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

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

音高不必与“sizeof(像素)*宽度”相同,原因有几个

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


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

当分配给它的所有内存按顺序组织时,OpenCV数组是连续的。换句话说,这样的数组不包含任何变量:数组(图像、矩阵等)可以视为一个“单行”向量

cv::Mat
中有一个名为
isContinuous
的方法来检查一个是否连续。从文档中,引用说明:

该方法用于相当多的OpenCV函数。关键是元素操作(如算术和逻辑操作、数学函数、alpha混合、颜色空间变换等)不依赖于图像几何体。因此,如果所有输入和输出数组都是连续的,则函数可以将它们作为非常长的单行向量进行处理


在中查找完整的解释(带示例)。

当分配给它的所有内存按顺序组织时,OpenCV数组是连续的。换句话说,这样的数组不包含任何变量:数组(图像、矩阵等)可以视为一个“单行”向量

cv::Mat
中有一个名为
isContinuous
的方法来检查一个是否连续。从文档中,引用说明:

该方法用于相当多的OpenCV函数。关键是元素操作(如算术和逻辑操作、数学函数、alpha混合、颜色空间变换等)不依赖于图像几何体。因此,如果所有输入和输出数组都是连续的,则函数可以将它们作为非常长的单行向量进行处理


请在中查找完整的解释(带示例)。

我认为“连续”也是一个更好的术语。“continuous”使数学函数的连续性变得非常混乱,在信号处理中非常常用(与OpenCV的目的密切相关)。感谢Jon的详细说明@MatheusGadelha,是的,我有信号处理的背景,这就是为什么我也感到困惑的原因。我相信连续也是一个更好的术语。“continuous”使数学函数的连续性变得非常混乱,在信号处理中非常常用(与OpenCV的目的密切相关)。感谢Jon的详细说明@MatheusGadelha,是的,我有信号处理背景,这就是为什么我也感到困惑。你的回答用简单的话澄清了一切。谢谢你的回答用简单的话澄清了一切。谢谢