Module: OpenCV::PointSet
- Included in:
- CvCapture
- Defined in:
- ext/opencv/pointset.cpp,
ext/opencv/cvcontour.cpp
Instance Method Summary collapse
-
#check_contour_convexity ⇒ Boolean
(also: #convexity?)
Tests whether the input contour is convex or not.
-
#contour_area ⇒ Float
Calculates area of the whole contour or contour section.
-
#convex_hull2([orientation_clockwise = true]) ⇒ Object
Finds convex hull of 2D point set using Sklansky's algorithm.
-
#convexity_defects(hull) ⇒ cvseq(include CvConvexityDefect)
Finds convexity defects of contour.
-
#fit_ellipse2 ⇒ Object
Return fits ellipse to set of 2D points.
-
#min_area_rect2 ⇒ Object
Finds circumscribed rectangle of minimal area for given 2D point set.
-
#min_enclosing_circle ⇒ Object
Finds circumscribed circle of minimal area for given 2D point set.
Instance Method Details
#check_contour_convexity ⇒ Boolean Also known as: convexity?
Tests whether the input contour is convex or not. The contour must be simple, i.e. without self-intersections.
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'ext/opencv/pointset.cpp', line 101 VALUE rb_check_contour_convexity(VALUE self) { int convexity = 0; try { convexity = cvCheckContourConvexity(CVARR(self)); } catch (cv::Exception& e) { raise_cverror(e); } return convexity ? Qtrue : Qfalse; } |
#contour_area ⇒ Float
Calculates area of the whole contour or contour section.
note: Orientation of the contour affects the area sign, thus the method may return negative result.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'ext/opencv/pointset.cpp', line 34 VALUE rb_contour_area(int argc, VALUE *argv, VALUE self) { VALUE slice; rb_scan_args(argc, argv, "01", &slice); double area = 0; try { area = cvContourArea(CVARR(self), NIL_P(slice) ? CV_WHOLE_SEQ : VALUE_TO_CVSLICE(slice)); } catch (cv::Exception& e) { raise_cverror(e); } return rb_float_new(area); } |
#convex_hull2([orientation_clockwise = true]) ⇒ Object
Finds convex hull of 2D point set using Sklansky's algorithm.
orientation_clockwise: Desired orientation of convex hull (true: clockwise, false: counter clockwise).
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'ext/opencv/pointset.cpp', line 76 VALUE rb_convex_hull2(int argc, VALUE *argv, VALUE self) { VALUE clockwise, return_points; rb_scan_args(argc, argv, "02", &clockwise, &return_points); VALUE storage = cCvMemStorage::new_object(); CvSeq *hull = NULL; int return_pts = TRUE_OR_FALSE(return_points, 1); try { hull = cvConvexHull2(CVSEQ(self), CVMEMSTORAGE(storage), TRUE_OR_FALSE(clockwise, 1) ? CV_CLOCKWISE : CV_COUNTER_CLOCKWISE, return_pts); } catch (cv::Exception& e) { raise_cverror(e); } return cCvSeq::new_sequence(cCvContour::rb_class(), hull, cCvPoint::rb_class(), storage); } |
#convexity_defects(hull) ⇒ cvseq(include CvConvexityDefect)
Finds convexity defects of contour.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'ext/opencv/pointset.cpp', line 120 VALUE rb_convexity_defects(VALUE self, VALUE hull) { CvSeq *defects = NULL; CvSeq *hull_seq = CVSEQ_WITH_CHECK(hull); VALUE storage = cCvMemStorage::new_object(); CvMemStorage *storage_ptr = CVMEMSTORAGE(storage); try { defects = cvConvexityDefects(CVSEQ(self), hull_seq, storage_ptr); } catch (cv::Exception& e) { raise_cverror(e); } return cCvSeq::new_sequence(cCvSeq::rb_class(), defects, cCvConvexityDefect::rb_class(), storage); } |
#fit_ellipse2 ⇒ Object
Return fits ellipse to set of 2D points.
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'ext/opencv/pointset.cpp', line 55 VALUE rb_fit_ellipse2(VALUE self) { CvBox2D box; try { box = cvFitEllipse2(CVARR(self)); } catch (cv::Exception& e) { raise_cverror(e); } return cCvBox2D::new_object(box); } |
#min_area_rect2 ⇒ Object
Finds circumscribed rectangle of minimal area for given 2D point set.
142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'ext/opencv/pointset.cpp', line 142 VALUE rb_min_area_rect2(VALUE self) { VALUE storage = cCvMemStorage::new_object(); CvBox2D rect; try { rect = cvMinAreaRect2(CVARR(self), CVMEMSTORAGE(storage)); } catch (cv::Exception& e) { raise_cverror(e); } return cCvBox2D::new_object(rect); } |
#min_enclosing_circle ⇒ Object
Finds circumscribed circle of minimal area for given 2D point set.
162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'ext/opencv/pointset.cpp', line 162 VALUE rb_min_enclosing_circle(VALUE self) { VALUE circle = cCvCircle32f::rb_allocate(cCvCircle32f::rb_class()); int success = 0; try { success = cvMinEnclosingCircle(CVARR(self), &CVCIRCLE32F(circle)->center, &CVCIRCLE32F(circle)->radius); } catch (cv::Exception& e) { raise_cverror(e); } return success ? circle : Qnil; } |