動的構造体

CvMemStorage

Comments from the Wiki

class CvMemStorage

動的に拡張可能なメモリストレージ.

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   # 関連するストレージも解放されます

CvSeq

Comments from the Wiki

class CvSeq

動的に拡張可能なシーケンス.

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

Comments from the Wiki

class CvSet

ノードの集合.

CvSet オブジェクトを返す OpenCV 関数も存在します.この CvSet は,反復可能なオブジェクトです.例えば,次のようになります:

for i in s:
  print i
print set(s)
print list(s)

CloneSeq

Comments from the Wiki

CloneSeq(seq, storage) → None

シーケンスのコピーを作成します.

パラメタ:
  • seq (CvSeq) – シーケンス.
  • storage (CvMemStorage) – 新しいシーケンスヘッダと(もしあれば)コピーされたデータを保存する出力ストレージブロック.これが NULL の場合,入力シーケンスが存在するストレージブロックを使用します.

この関数は,入力シーケンスの完全なコピーを作成し,そのポインタを返します.

CreateMemStorage

Comments from the Wiki

CreateMemStorage(blockSize = 0) → memstorage

メモリストレージを作成します.

パラメタ:blockSize (int) – バイト単位で表されたストレージブロックサイズ.この値が 0 の場合,デフォルト値(現在は,約64K)が利用されます.

この関数は,空のメモリストレージオブジェクトを作成します.

SeqInvert

Comments from the Wiki

SeqInvert(seq) → None

シーケンス要素の順序を反転させます.

パラメタ:seq (CvSeq) – シーケンス.

この関数は,入力シーケンスの要素の順序を(先頭の要素は末尾に,末尾の要素は先頭へ,という風に)反転させます.

SeqRemove

Comments from the Wiki

SeqRemove(seq, index) → None

シーケンスの中から要素を削除します.

パラメタ:
  • seq (CvSeq) – シーケンス.
  • index (int) – 削除される要素.

この関数は,指定のインデックス位置にある要素を削除します.インデックスが範囲外の場合はエラーになります.また,空のシーケンスから要素を削除しようとする事も,範囲外アクセスの特殊ケースです.この関数は,指定位置に近い側のシーケンスの端と index 番目(これは含まない)の要素の間に存在するシーケンス要素をシフトする事によって,要素を削除します.

SeqRemoveSlice

Comments from the Wiki

SeqRemoveSlice(seq, slice) → None

シーケンススライスを削除します.

パラメタ:
  • seq (CvSeq) – シーケンス.
  • slice (CvSlice) – 削除されるスライス.

この関数は,シーケンスからシーケンススライスを削除します.

目次

このページ