我应该何时使用此功能。任何人都可以用一个例子来解释我吗?
答案 0 :(得分:6)
根据Documentation, 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。看它的高度是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()
类似。
答案 1 :(得分: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中起始行到结束行的值。