2

我什么时候应该使用这个功能。任何人都可以用一个例子来解释我吗?

4

2 回答 2

6

根据文档,Returns array row or row span.返回您指定的行。

我将在 Python 终端的帮助下解释它:

以灰度模式加载图像并检查其宽度和高度。

>>> import cv2.cv as cv
>>> img = cv.LoadImage('approx2.jpg',0)
>>> img
<iplimage(nChannels=1 width=300 height=300 widthStep=300 )>

看,图像是 300x300 大小。下面是图片。

在此处输入图像描述

对所有像素求和,

>>> cv.Sum(img)
(1252271.0, 0.0, 0.0, 0.0)

现在我们应用我们的第一个函数 cv.GetRow()

>>> row = cv.GetRow(img,150)
>>> row
<cvmat(type=42424000 8UC1 rows=1 cols=300 step=300 )>

>>> cv.Sum(row)
(14279.0, 0.0, 0.0, 0.0)

我取了第 150 行并取了该行中所有元素的总和。看到结果图像的高度 = 1。

现在采用函数 cv.GetRows()。

>>> rows = cv.GetRows(img,0,150)
>>> rows
<cvmat(type=42424000 8UC1 rows=150 cols=300 step=300 )>

>>> cv.Sum(rows)
(802501.0, 0.0, 0.0, 0.0)

我从第 150 行中取出所有行。看到它的高度是 150。查看下图:

在此处输入图像描述

现在这个函数有第四个参数delta_row可以用作增量。它将选择作为上述步长增量的行,跳过其间的所有内容。即,如果指定,the function extracts every delta_row -th row from start_row and up to (but not including) end_row .

>>> rows = cv.GetRows(img,0,300,5)
>>> rows
<cvmat(type=42420000 8UC1 rows=60 cols=300 step=1500 )>

看,现在高度只有 30,因为它每 5 行提取一次。

结果如下:

在此处输入图像描述

情况类似cv.GetCol() and cv.GetCols()

于 2012-07-07T05:25:00.647 回答
0

我发现了另一个方法调用。让我们考虑这个 C++ 代码段。

CvMat* input_matrix,sub_matrix;
int start,end;
//declarations of variables go here
cvGetRows(input_matrix, &sub_matrix, start, end);

函数获取 input_matrix 中从 start_row 到 end_row 的行,并通过 sub_matrix 指针指向它。现在我们可以使用该指针在 input_matrix 中将起始行的值填充到结束行。

于 2012-07-08T04:58:30.137 回答