
8
Contours
Although algorithms like the Canny edge detector can be used to find the edge pixels that separate different
segments in an image, they do not tell you anything about those edges as entities in themselves. The next
step is to be able to assemble those edge pixels into contours. By now you have probably come to expect
that there is a convenient function in OpenCV that will do exactly this for you, and indeed there is:
cv::findContours(). We will start out this chapter with some basics that we will need in order to use
this function.. With those concepts in hand, we will get into contour finding in some detail. Thereafter, we
will move on to the many things we can do with contours after they’ve been computed.
Contour Finding
A contour is a list of points that represent, in one way or another, a curve in an image. This representation
can be different depending on the circumstance at hand. There are many ways to represent a curve.
Contours are represented in OpenCV by STL style vector<> template objects in which every entry in the
vector encodes information about the location of the next point on the curve. It should be noted that though
a sequence of 2d points (vector<cv::Point> or vector<cv::Point2f>) is the most common
representation, there are other ways to represent contours as well. One example of such a construct is the
Freeman Chain, in which each point is represent ...