名前
Cv::Seq - OpenCV のシーケンスを取り扱う。
概要
説明
OpenCV のシーケンスは、点、矩形、円など様々なデータを格納します。格納さ れたデータを型なしで扱うスーパクラス Cv::Seq と、データに 合わせた変換を行う派生クラス Cv::Seq::Point, Cv::Seq::Rect, ... に分け、データに合わせて bless して使います。C言語のキャストのようなものです。
facedetect の一部を示します。HaarDetectObjects() は、検出した顔を複数の CvRect 型のデータのリストにして返します。次の例は、シーケンスを Cv::Seq::Rect
で bless して、顔を 1つずつ取り出します。
my $faces = bless $image->HaarDetectObjects(
$cascade, $storage, 1.1, 2, CV_HAAR_SCALE_IMAGE,
cvSize(30, 30)), "Cv::Seq::Rect";
while (my @rect = $faces->shift) {
my ($x, $y, $w, $h) = @rect;
...
}
同じ部分の C言語のコードを並べておきます。比べやすくするために、余分な ものは省きました。
CvSeq* faces = cvHaarDetectObjects(
image, cascade, storage, 1.1, 2, CV_HAAR_SCALE_IMAGE,
cvSize(30, 30));
for (;;) {
CvRect rect;
cvSeqPopFront(faces, &rect);
...
}
メソッド
- Cv->CreateSeq()
- CreateSeq($seqFlags, $headerSize, $elemSize, $stor)
- Cv::Seq->MakeSeqHeaderForArray($seqFlags, $headerSize, $elemSize, $stor)
- Cv::Seq->new($seqFlags, $headerSize, $elemSize, $stor)
- $seq->Push(@elem)
- $seq->Pop()
- $seq->Unshift(@elem)
- $seq->Shift()
- $seq->Splice()
-
# splice($array, $offset, $length, @list) # splice($array, $offset, $length) # splice($array, $offset)
バグ
参考
著作権
Yuta MASUDA <yuta.masuda@newdaysys.co.jp>
Copyright (c) 2012 by Yuta MASUDA.
All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.