動的構造体 =============== .. highlight:: python .. index:: CvMemStorage .. _CvMemStorage: CvMemStorage ------------ `id=0.365283080064 Comments from the Wiki `__ .. class:: CvMemStorage 動的に拡張可能なメモリストレージ. OpenCV の多くの関数が,結果を出力するために与えられたストレージや,作業用のストレージを利用しています. そして,これらのストレージ領域は, :ref:`CreateMemStorage` によって作成されます. OpenCV Python は,CvMemStorage を占有するオブジェクトを監視し,それを参照するオブジェクトがなくなった時点で CvMemStorage を自動的に解放します このため, CvMemStorage を解放するための明示的な関数は存在しません. .. doctest:: >>> 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 # 関連するストレージも解放されます .. .. index:: CvSeq .. _CvSeq: CvSeq ----- `id=0.927512725369 Comments from the Wiki `__ .. class:: CvSeq 動的に拡張可能なシーケンス. OpenCV には CvSeq オブジェクトを返す関数が多数あります. CvSeq オブジェクトはシーケンスであり,以下はすべて正しい書き方です: .. code-block:: python 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 の関数(例えば, :ref:`FindContours` )も存在します. この場合,これらのメソッドは,(つながった)別のシーケンスを返します.関連するシーケンスが存在しない場合は,これらのメソッドは ``None`` を返します. .. index:: CvSet .. _CvSet: CvSet ----- `id=0.0119339364348 Comments from the Wiki `__ .. class:: CvSet ノードの集合. CvSet オブジェクトを返す OpenCV 関数も存在します.この CvSet は,反復可能なオブジェクトです.例えば,次のようになります: .. code-block:: python for i in s: print i print set(s) print list(s) .. .. index:: CloneSeq .. _CloneSeq: CloneSeq -------- `id=0.461521491951 Comments from the Wiki `__ .. function:: CloneSeq(seq,storage)-> None シーケンスのコピーを作成します. :param seq: シーケンス. :type seq: :class:`CvSeq` :param storage: 新しいシーケンスヘッダと(もしあれば)コピーされたデータを保存する出力ストレージブロック.これが NULL の場合,入力シーケンスが存在するストレージブロックを使用します. :type storage: :class:`CvMemStorage` この関数は,入力シーケンスの完全なコピーを作成し,そのポインタを返します. .. index:: CreateMemStorage .. _CreateMemStorage: CreateMemStorage ---------------- `id=0.482451055392 Comments from the Wiki `__ .. function:: CreateMemStorage(blockSize = 0) -> memstorage メモリストレージを作成します. :param blockSize: バイト単位で表されたストレージブロックサイズ.この値が 0 の場合,デフォルト値(現在は,約64K)が利用されます. :type blockSize: int この関数は,空のメモリストレージオブジェクトを作成します. .. index:: SeqInvert .. _SeqInvert: SeqInvert --------- `id=0.843353121312 Comments from the Wiki `__ .. function:: SeqInvert(seq)-> None シーケンス要素の順序を反転させます. :param seq: シーケンス. :type seq: :class:`CvSeq` この関数は,入力シーケンスの要素の順序を(先頭の要素は末尾に,末尾の要素は先頭へ,という風に)反転させます. .. index:: SeqRemove .. _SeqRemove: SeqRemove --------- `id=0.513828169846 Comments from the Wiki `__ .. function:: SeqRemove(seq,index)-> None シーケンスの中から要素を削除します. :param seq: シーケンス. :type seq: :class:`CvSeq` :param index: 削除される要素. :type index: int この関数は,指定のインデックス位置にある要素を削除します.インデックスが範囲外の場合はエラーになります.また,空のシーケンスから要素を削除しようとする事も,範囲外アクセスの特殊ケースです.この関数は,指定位置に近い側のシーケンスの端と ``index`` 番目(これは含まない)の要素の間に存在するシーケンス要素をシフトする事によって,要素を削除します. .. index:: SeqRemoveSlice .. _SeqRemoveSlice: SeqRemoveSlice -------------- `id=0.0647414629932 Comments from the Wiki `__ .. function:: SeqRemoveSlice(seq,slice)-> None シーケンススライスを削除します. :param seq: シーケンス. :type seq: :class:`CvSeq` :param slice: 削除されるスライス. :type slice: :class:`CvSlice` この関数は,シーケンスからシーケンススライスを削除します.