OpenCV isContinuous()函数简析
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV isContinuous()函数简析相关的知识,希望对你有一定的参考价值。
isContinuous()函数
cv::Mat::isContinuous()
返回为bool
值,判断存储是否连续。
这里连续的 意思是行与行之间的储存是否衔接。也就是说1*1
和1*N
的数据肯定是连续的,而m*n
的数据就是需要判断连续性的。
如果数据存储是连续的,可以将图像看出一个一维数组。否则只能用二维数据方式进行访问。
一般用Mat::creat()创建的矩阵都是连续的,但是也不绝对,依然需要判断才可以进行连续性操作。而从图像中截取的图像通常是不连续的,如果想将其转换为连续存储,可以用clone进行拷贝一份.
案例
例如下面代码
Mat image = imread("test2.jpg");
// 获取图像宽、高
int channels = image.channels();
int rows = image.rows;
int cols = image.cols * channels;
// isContinuous()函数,返回bool值,判断存储是否连续。
if (image.isContinuous()) {
cols *= rows;
rows = 1;
}
如果数据存储是不连续的就直接获得矩阵的行数和列数。如果是连续的,行数就是1,列数就是所有像素
以上是关于OpenCV isContinuous()函数简析的主要内容,如果未能解决你的问题,请参考以下文章