5 #include <visp3/core/vpConfig.h>
6 #include <visp3/core/vpImage.h>
7 #include <visp3/gui/vpDisplayGDI.h>
8 #include <visp3/gui/vpDisplayOpenCV.h>
9 #include <visp3/gui/vpDisplayX.h>
10 #include <visp3/io/vpImageIo.h>
12 #if defined(VISP_HAVE_MODULE_IMGPROC) && (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_OPENCV))
14 #include <visp3/imgproc/vpImgproc.h>
17 #ifdef ENABLE_VISP_NAMESPACE
26 std::cout <<
"\nContour:" << std::endl;
27 std::cout <<
"\tlevel: " << level << std::endl;
30 std::cout <<
"\tcontour size: " << contour.
m_points.size() << std::endl;
31 std::cout <<
"\tnb children: " << contour.
m_children.size() << std::endl;
33 for (std::vector<VISP_NAMESPACE_NAME::vpContour *>::const_iterator it = contour.
m_children.begin(); it != contour.
m_children.end();
35 displayContourInfo(**it, level + 1);
43 std::vector<std::vector<vpImagePoint> > contours;
44 contours.push_back(contour.
m_points);
47 for (std::vector<VISP_NAMESPACE_NAME::vpContour *>::const_iterator it = contour.
m_children.begin(); it != contour.
m_children.end();
49 drawContoursTree(I, **it);
56 int main(
int argc,
const char **argv)
59 #if defined(VISP_HAVE_MODULE_IMGPROC) && (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_OPENCV))
62 std::string input_filename =
"grid36-03.pgm";
63 bool white_foreground =
false;
66 for (
int i = 1; i < argc; i++) {
67 if (std::string(argv[i]) ==
"--input" && i + 1 < argc) {
68 input_filename = std::string(argv[i + 1]);
70 else if (std::string(argv[i]) ==
"--white_foreground") {
71 white_foreground =
true;
73 else if (std::string(argv[i]) ==
"--method" && i + 1 < argc) {
76 else if (std::string(argv[i]) ==
"--help" || std::string(argv[i]) ==
"-h") {
77 std::cout <<
"Usage: " << argv[0]
78 <<
" [--input <input image>] [--method <0: "
79 "CONTOUR_RETR_TREE, 1: CONTOUR_RETR_LIST, 2: "
80 "CONTOUR_RETR_EXTERNAL>]"
81 " [--white_foreground] [--help]"
97 #elif defined(VISP_HAVE_GDI)
99 #elif defined(HAVE_OPENCV_HIGHGUI)
102 d.
init(I_bin, 0, 0,
"After binarisation");
103 d2.init(I_draw_contours, I_bin.getWidth(), 10,
"Contours");
108 for (
unsigned int i = 0; i < I_bin.getSize(); i++) {
109 I_bin.bitmap[i] = 255 * I.
bitmap[i];
114 std::vector<std::vector<vpImagePoint> > contours;
129 I_draw_contours =
vpRGBa(0);
131 drawContoursTree(I_draw_contours, vp_contours);
133 displayContourInfo(vp_contours, 0);
static const vpColor green
Display for windows using GDI (available on any windows 32 platform).
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="") VP_OVERRIDE
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void display(const vpImage< unsigned char > &I)
static void flush(const vpImage< unsigned char > &I)
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
static void read(vpImage< unsigned char > &I, const std::string &filename, int backend=IO_DEFAULT_BACKEND)
unsigned int getWidth() const
Type * bitmap
points toward the bitmap
unsigned int getHeight() const
VISP_EXPORT void findContours(const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I_original, vpContour &contours, std::vector< std::vector< VISP_NAMESPACE_ADDRESSING vpImagePoint > > &contourPts, const vpContourRetrievalType &retrievalMode=CONTOUR_RETR_TREE)
VISP_EXPORT void drawContours(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const std::vector< std::vector< VISP_NAMESPACE_ADDRESSING vpImagePoint > > &contours, unsigned char grayValue=255)
VISP_EXPORT unsigned char autoThreshold(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const vpAutoThresholdMethod &method, const unsigned char backgroundValue=0, const unsigned char foregroundValue=255)
std::vector< vpContour * > m_children
Children contour.
std::vector< VISP_NAMESPACE_ADDRESSING vpImagePoint > m_points
Vector of points belonging to the contour.
vpContourType m_contourType
Contour type.