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には、インクリメントとして使用できる4番目の引数があります。上記のステップサイズの増分である行を選択し、その間のすべてをスキップします。つまり、指定されている場合、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 )>

ほら、5行ごとに抽出されるため、高さはわずか30になります。

結果は以下の通りです:

ここに画像の説明を入力してください

の場合も同様です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 に答える