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

Merge branch 'bugfix' into OpenCV_2.4

This commit is contained in:
ser1zw 2012-05-03 00:45:02 +09:00
commit cd88744056
2 changed files with 11 additions and 11 deletions

View file

@ -19,8 +19,8 @@ __NAMESPACE_BEGIN_CVCONTOUR
#define APPROX_POLY_OPTION(op) rb_get_option_table(rb_klass, "APPROX_OPTION", op) #define APPROX_POLY_OPTION(op) rb_get_option_table(rb_klass, "APPROX_OPTION", op)
#define APPROX_POLY_METHOD(op) CVMETHOD("APPROX_POLY_METHOD", LOOKUP_CVMETHOD(op, "method"), CV_POLY_APPROX_DP) #define APPROX_POLY_METHOD(op) CVMETHOD("APPROX_POLY_METHOD", LOOKUP_CVMETHOD(op, "method"), CV_POLY_APPROX_DP)
#define APPROX_POLY_PARAMETER(op) NUM2DBL(LOOKUP_CVMETHOD(op, "parameter")) #define APPROX_POLY_ACCURACY(op) NUM2DBL(LOOKUP_CVMETHOD(op, "accuracy"))
#define APPROX_POLY_PARAMETER2(op) TRUE_OR_FALSE(LOOKUP_CVMETHOD(op, "parameter2")) #define APPROX_POLY_RECURSIVE(op) TRUE_OR_FALSE(LOOKUP_CVMETHOD(op, "recursive"))
VALUE rb_allocate(VALUE klass); VALUE rb_allocate(VALUE klass);
void cvcontour_free(void *ptr); void cvcontour_free(void *ptr);
@ -60,8 +60,8 @@ define_ruby_class()
VALUE approx_option = rb_hash_new(); VALUE approx_option = rb_hash_new();
rb_define_const(rb_klass, "APPROX_OPTION", approx_option); rb_define_const(rb_klass, "APPROX_OPTION", approx_option);
rb_hash_aset(approx_option, ID2SYM(rb_intern("method")), INT2FIX(CV_POLY_APPROX_DP)); rb_hash_aset(approx_option, ID2SYM(rb_intern("method")), INT2FIX(CV_POLY_APPROX_DP));
rb_hash_aset(approx_option, ID2SYM(rb_intern("parameter")), rb_float_new(1.0)); rb_hash_aset(approx_option, ID2SYM(rb_intern("accuracy")), rb_float_new(1.0));
rb_hash_aset(approx_option, ID2SYM(rb_intern("parameter2")), Qfalse); rb_hash_aset(approx_option, ID2SYM(rb_intern("recursive")), Qfalse);
rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1); rb_define_private_method(rb_klass, "initialize", RUBY_METHOD_FUNC(rb_initialize), -1);
rb_define_method(rb_klass, "rect", RUBY_METHOD_FUNC(rb_rect), 0); rb_define_method(rb_klass, "rect", RUBY_METHOD_FUNC(rb_rect), 0);
@ -158,8 +158,8 @@ rb_approx_poly(int argc, VALUE *argv, VALUE self)
VALUE storage = cCvMemStorage::new_object(); VALUE storage = cCvMemStorage::new_object();
CvSeq *contour = cvApproxPoly(CVCONTOUR(self), sizeof(CvContour), CVMEMSTORAGE(storage), CvSeq *contour = cvApproxPoly(CVCONTOUR(self), sizeof(CvContour), CVMEMSTORAGE(storage),
APPROX_POLY_METHOD(approx_poly_option), APPROX_POLY_METHOD(approx_poly_option),
APPROX_POLY_PARAMETER(approx_poly_option), APPROX_POLY_ACCURACY(approx_poly_option),
APPROX_POLY_PARAMETER2(approx_poly_option)); APPROX_POLY_RECURSIVE(approx_poly_option));
if (contour && contour->total > 0) { if (contour && contour->total > 0) {
return cCvSeq::new_sequence(cCvContour::rb_class(), contour, cCvPoint::rb_class(), storage); return cCvSeq::new_sequence(cCvContour::rb_class(), contour, cCvPoint::rb_class(), storage);

View file

@ -10,8 +10,8 @@ include OpenCV
class TestCvContour < OpenCVTestCase class TestCvContour < OpenCVTestCase
def test_APPROX_OPTION def test_APPROX_OPTION
assert_equal(0, CvContour::APPROX_OPTION[:method]) assert_equal(0, CvContour::APPROX_OPTION[:method])
assert_equal(1.0, CvContour::APPROX_OPTION[:parameter]) assert_equal(1.0, CvContour::APPROX_OPTION[:accuracy])
assert_false(CvContour::APPROX_OPTION[:parameter2]) assert_false(CvContour::APPROX_OPTION[:recursive])
end end
def test_initialize def test_initialize
@ -56,7 +56,7 @@ class TestCvContour < OpenCVTestCase
assert(poly.size > 0) assert(poly.size > 0)
assert(poly.all? { |c| c.class == CvPoint }) assert(poly.all? { |c| c.class == CvPoint })
poly = contours.approx_poly(:parameter => 2.0) poly = contours.approx_poly(:accuracy => 2.0)
assert_equal(CvContour, poly.class) assert_equal(CvContour, poly.class)
assert(poly.size > 0) assert(poly.size > 0)
assert(poly.all? { |c| c.class == CvPoint }) assert(poly.all? { |c| c.class == CvPoint })
@ -68,13 +68,13 @@ class TestCvContour < OpenCVTestCase
assert(poly.all? { |c| c.class == CvPoint }) assert(poly.all? { |c| c.class == CvPoint })
} }
poly = contours.approx_poly(:method => :dp, :parameter => 2.0, :parameter2 => false) poly = contours.approx_poly(:method => :dp, :accuracy => 2.0, :recursive => false)
assert_equal(CvContour, poly.class) assert_equal(CvContour, poly.class)
assert(poly.size > 0) assert(poly.size > 0)
assert(poly.all? { |c| c.class == CvPoint }) assert(poly.all? { |c| c.class == CvPoint })
# Uncomment the following lines to show the result # Uncomment the following lines to show the result
# poly = contours.approx_poly(:parameter => 3.0) # poly = contours.approx_poly(:accuracy => 3.0)
# dst = mat0.clone.zero # dst = mat0.clone.zero
# begin # begin
# dst.draw_contours!(poly, CvColor::White, CvColor::Black, 2, # dst.draw_contours!(poly, CvColor::White, CvColor::Black, 2,