The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

名前

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)

バグ

参考

Cv::Nihongo, Cv::More

著作権

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.