2013-03-26 06:42:23 -0600 received badge ● Enlightened (source) 2013-03-26 06:42:23 -0600 received badge ● Good Answer (source) 2012-10-12 01:21:58 -0600 received badge ● Nice Answer (source) 2012-09-29 07:51:23 -0600 answered a question Convexity Defects in OpenCV 2.4.2 This solves your problem: // 1) Your contour needs to be of type std::vector std::vector contour;  // 2) If you've got contour using findcontours, you've got a std::vector> contour_set; that you can pass like this: contour_set[i] instead of contour in the convexHull-method (see below) // 3) Determine the convex Hull based on int-indeces for contour point localization // ATTENTION: gives you the 'contour element indeces' (= convex hull's key points)!!!! cv::vector convexHull_IntIdx; cv::convexHull(contour, convexHull_IntIdx, true);  // 4) Use the convexityDefects method to determine the convexity defects std::vector convexityDefectsSet; // Here will be start, end point and "most deep" point (the convexity defect, see the documentation-picture) as well as its distance (depth) to the start-end-line determined... as a vector: for each convexity defect one vector-element cv::convexityDefects(contour, convexHull_IntIdx, convexityDefectsSet);  // 5) You can then access the 4 parameters that this function calculates (start, end, depth/defect-point and depth) like this: for (int cDefIt = 0; cDefIt < convexityDefectsSet.size(); cDefIt++) { int startIdx = convexityDefectsSet[cDefIt].val[0]; int endIdx = convexityDefectsSet[cDefIt].val[1]; int defectPtIdx = convexityDefectsSet[cDefIt].val[2]; double depth = (double)convexityDefectsSet[cDefIt].val[3]/256.0f; // see documentation link below why this // do something with *contour[defectPtIdx]*.. This is e.g. the defect point. }  See for more infos the documentation: http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#void convexityDefects(InputArray contour, InputArray convexhull, OutputArray convexityDefects) 2012-09-29 07:33:13 -0600 received badge ● Teacher (source) 2012-09-29 07:25:36 -0600 received badge ● Editor (source) 2012-09-29 07:14:41 -0600 received badge ● Critic (source) 2012-09-27 16:44:06 -0600 received badge ● Necromancer (source) 2012-09-27 12:11:31 -0600 answered a question shape context implementation in opencv Hey there, unfortunately, OpenCV has no shape context (SC) implementation accepted, yet. You can find here a C++ implementation that was implemented analogeously to Belongie et al. (2000, 2001, 2002) (I'm not sure if the second link is really their's): http://www.umiacs.umd.edu/~zhengyf/PointMatching.htm The original (?) MATLAB-implementation can be found here: http://www.eecs.berkeley.edu/Research/Projects/CS/vision/shape/sc_digits.html C#-implementation: http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=7465&lngWId=10 And see what happens in the following link. Someone made there a mistake to mix up shape matching and shape context, so read carefully the documentation if you read about shape matching in OpenCV that uses Hu moments and shape matching using shape context. There's nothing for SC in OpenCV like the descriptor (shape context/the histogram [log(r),theta]), assignment problem solver (like hungarian [by munkres in O(n^3)], ...) etc.] or deforming algorithms to model transformations (TPS - Thin Plate Spline, ...) etc. as far as I know). Here the link: http://stackoverflow.com/questions/3146546/objective-c-implementation-of-shape-context-algorithm-image-matching Here the Hu-moments-based shape matching.. Maybe it already satisfies your needs as SC is tricky to implement by yourself. Here the link to matching (...): http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html