この関数はいつ使用する必要がありますか。誰かが例を挙げて私を説明できますか?
2 に答える
ドキュメントによると、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()
。
メソッドの別の呼び出しを見つけました。この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の開始行から終了行までの値を入力できます。