1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

modified and tested CvConnectedComp

This commit is contained in:
ser1zw 2011-02-22 22:33:25 +09:00
parent 741f83daff
commit 37e95115e0
3 changed files with 94 additions and 3 deletions

View file

@ -50,14 +50,29 @@ define_ruby_class()
rb_define_method(rb_klass, "area", RUBY_METHOD_FUNC(rb_area), 0);
rb_define_method(rb_klass, "value", RUBY_METHOD_FUNC(rb_value), 0);
rb_define_method(rb_klass, "rect", RUBY_METHOD_FUNC(rb_rect), 0);
rb_define_method(rb_klass, "rect=", RUBY_METHOD_FUNC(rb_set_rect), 0);
rb_define_method(rb_klass, "rect=", RUBY_METHOD_FUNC(rb_set_rect), 1);
rb_define_method(rb_klass, "contour", RUBY_METHOD_FUNC(rb_contour), 0);
}
void
cvconnectedcomp_free(void *ptr)
{
if (ptr) {
CvConnectedComp* connected_comp = (CvConnectedComp*)ptr;
if (connected_comp->contour) {
CvContour *contour = (CvContour*)connected_comp->contour;
if (contour->storage)
cvReleaseMemStorage(&(contour->storage));
}
free(ptr);
}
}
VALUE
rb_allocate(VALUE klass)
{
CvConnectedComp *ptr;
return Data_Make_Struct(klass, CvConnectedComp, 0, -1, ptr);
return Data_Make_Struct(klass, CvConnectedComp, 0, cvconnectedcomp_free, ptr);
}
/*
@ -97,6 +112,15 @@ rb_set_rect(VALUE self, VALUE rect)
return self;
}
/*
* Return optional component boundary
*/
VALUE
rb_contour(VALUE self)
{
return REFER_OBJECT(cCvContour::rb_class(), &CVCONNECTEDCOMP(self)->contour, self);
}
VALUE
new_object()
{