動的に拡張可能なメモリストレージ.
OpenCV の多くの関数が,結果を出力するために与えられたストレージや,作業用のストレージを利用しています. そして,これらのストレージ領域は, CreateMemStorage によって作成されます. OpenCV Python は,CvMemStorage を占有するオブジェクトを監視し,それを参照するオブジェクトがなくなった時点で CvMemStorage を自動的に解放します このため, CvMemStorage を解放するための明示的な関数は存在しません.
>>> import cv
>>> image = cv.LoadImageM("building.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
>>> seq = cv.FindContours(image, cv.CreateMemStorage(), cv.CV_RETR_TREE, cv.CV_CHAIN_APPROX_SIMPLE)
>>> del seq # 関連するストレージも解放されます
動的に拡張可能なシーケンス.
OpenCV には CvSeq オブジェクトを返す関数が多数あります. CvSeq オブジェクトはシーケンスであり,以下はすべて正しい書き方です:
seq = cv.FindContours(scribble, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
# seq は,点の組のシーケンス
print len(seq)
# FindContours が返した (x,y) 点のシーケンスを表示します:
for (x,y) in seq:
print (x,y)
print seq[10] # シーケンスの11番目の要素
print seq[::-1] # 逆向きのシーケンス
print sorted(list(seq)) # ソートされたシーケンス
また,CvSeq オブジェクトは以下のメソッドを持ちます h_next() , h_prev() , v_next() , v_prev() . これらのメソッドで連結された複数の CvSeq オブジェクトを返すことができる OpenCV の関数(例えば, FindContours )も存在します. この場合,これらのメソッドは,(つながった)別のシーケンスを返します.関連するシーケンスが存在しない場合は,これらのメソッドは None を返します.
ノードの集合.
CvSet オブジェクトを返す OpenCV 関数も存在します.この CvSet は,反復可能なオブジェクトです.例えば,次のようになります:
for i in s:
print i
print set(s)
print list(s)
シーケンスのコピーを作成します.
パラメタ: |
|
---|
この関数は,入力シーケンスの完全なコピーを作成し,そのポインタを返します.
メモリストレージを作成します.
パラメタ: | blockSize (int) – バイト単位で表されたストレージブロックサイズ.この値が 0 の場合,デフォルト値(現在は,約64K)が利用されます. |
---|
この関数は,空のメモリストレージオブジェクトを作成します.
この関数は,入力シーケンスの要素の順序を(先頭の要素は末尾に,末尾の要素は先頭へ,という風に)反転させます.
この関数は,指定のインデックス位置にある要素を削除します.インデックスが範囲外の場合はエラーになります.また,空のシーケンスから要素を削除しようとする事も,範囲外アクセスの特殊ケースです.この関数は,指定位置に近い側のシーケンスの端と index 番目(これは含まない)の要素の間に存在するシーケンス要素をシフトする事によって,要素を削除します.