Cv
view release on metacpan or search on metacpan
&Cv::CV_TYPE_NAME_HAAR => 'Cv::HaarClassifierCascade',
&Cv::CV_TYPE_NAME_IMAGE => 'Cv::Image',
&Cv::CV_TYPE_NAME_MAT => 'Cv::Mat',
&Cv::CV_TYPE_NAME_MATND => 'Cv::MatND',
&Cv::CV_TYPE_NAME_SEQ => 'Cv::Seq',
&Cv::CV_TYPE_NAME_SEQ_TREE => 'Cv::Seq',
&Cv::CV_TYPE_NAME_SPARSE_MAT => 'Cv::SparseMat',
);
package Cv::FileStorage;
{ *new = \&Cv::OpenFileStorage }
sub fsbless {
my ($ptr) = @_;
if (my $class = $Cv::CLASS{Cv::cvTypeOf($ptr)->type_name}) {
bless $ptr, $class;
}
$ptr;
}
sub Cv::Load {
ref (my $class = shift) and Carp::croak 'class name needed';
Cv::FileStorage->Load(@_)
}
sub Load {
ref (my $class = shift) and Carp::croak 'class name needed';
my $ref = fsbless Cv::cvLoad(@_);
Carp::croak "type_name unknown in ", (caller 0)[3]
unless Scalar::Util::blessed $ref;
$ref;
}
sub Read {
my $ref = fsbless cvRead(@_);
Carp::croak "type_name unknown in ", (caller 0)[3]
unless Scalar::Util::blessed $ref;
$ref;
}
sub ReadByName {
my ($fs, $map, $name) = splice(@_, 0, 3);
Carp::croak "instance variable needed" unless ref $fs;
$fs->Read($fs->getFileNodeByName($map, $name), @_);
}
sub Cv::TypeInfo::DESTROY {}
sub Cv::FileNode::DESTROY {}
sub Cv::String::DESTROY {}
# ============================================================
# core. The Core Functionality: Clustering
# ============================================================
# ============================================================
# core. The Core Functionality: Utility and System Functions and Macros
# ============================================================
package Cv;
=head2 Error Handling
C<Cv> is now possible to detect errors that occur in the block
protected as eval { ... }. (Cv-0.13)
my $img = eval { Cv->createImage([-1, -1], 8, 3) };
if ($@) {
print STDERR "*** got error ***";
}
=cut
our %ERROR = (
handler => undef,
handler_sample => sub {
my ($status, $func_name, $err_msg, $file_name, $line) = @_;
Carp::croak("$func_name: @{[ cvErrorStr($status) ]} ($err_msg)");
},
mode => 0,
status => undef,
userdata => undef,
);
our $ERROR = sub {
my ($status, $func_name, $err_msg, $file_name, $line) = @_;
cvSetErrStatus($status);
$func_name ||= 'unknown function';
my $mode = $ERROR{mode};
if ($mode == 0 || $mode == 1) {
if (my $handler = $ERROR{handler}) {
&{$handler}(
$status, $func_name, $err_msg, $file_name, $line,
$ERROR{userdata},
);
}
}
my $long = join(' ', "OpenCV Error:", cvErrorStr($status), "($err_msg)",
"in $func_name");
my $short = "$func_name: @{[cvErrorStr($status)]} ($err_msg)";
Carp::croak $long if $mode == 0;
};
# CV_IMPL void cvError(int code, const char* func_name,
# const char* err_msg, const char* file_name, int line)
sub cvError {
goto &$ERROR;
}
# CvErrorCallback cvRedirectError(
# CvErrorCallback error_handler, void* userdata=NULL, void** prevUserdata=NULL)
sub cvRedirectError {
my $handler; ($handler, $_[2]) = ($ERROR{handler}, $ERROR{userdata});
($ERROR{handler}, $ERROR{userdata}) = @_[0..1];
$handler;
}
( run in 0.529 second using v1.01-cache-2.11-cpan-f56aa216473 )