ViSP  2.10.0
vpDetectorQRCode Class Reference

#include <vpDetectorQRCode.h>

+ Inheritance diagram for vpDetectorQRCode:

Public Member Functions

 vpDetectorQRCode ()
 
virtual ~vpDetectorQRCode ()
 
bool detect (const vpImage< unsigned char > &I)
 
std::vector< std::vector< vpImagePoint > > & getPolygon ()
 
std::vector< vpImagePoint > & getPolygon (size_t i)
 
std::string & getMessage (size_t i)
 
std::vector< std::string > & getMessage ()
 
size_t getNbObjects () const
 
vpImagePoint getCog (size_t i) const
 
vpRect getBBox (size_t i) const
 

Protected Attributes

zbar::ImageScanner m_scanner
 
std::vector< std::vector< vpImagePoint > > m_polygon
 
std::vector< std::string > m_message
 
size_t m_nb_objects
 

Detailed Description

Base class for bar code detector. This class is a wrapper over libzbar available from http://zbar.sourceforge.net/

The detect() function allows to detect multiple QR codes in an image. Once detected, for each QR code it is possible to retrieve the location of the corners using getPolygon(), the encoded message using getMessage(), the bounding box using getBBox() and the center of gravity using getCog().

The following sample code shows how to use this class to detect QR codes in an image.

#include <visp/vpDetectorQRCode.h>
#include <visp/vpImageIo.h>
int main()
{
#ifdef VISP_HAVE_ZBAR
vpImageIo::read(I, "bar-code.pgm");
vpDetectorQRCode detector;
bool status = detector.detect(I);
if (status) {
for(size_t i=0; i < detector.getNbObjects(); i++) {
std::cout << "Bar code " << i << ":" << std::endl;
std::vector<vpImagePoint> p = detector.getPolygon(i);
for(size_t j=0; j < p.size(); j++)
std::cout << " Point " << j << ": " << p[j] << std::endl;
std::cout << " Message: \"" << detector.getMessage(i) << "\"" << std::endl;
}
}
#endif
}

The previous example may produce results like:

Bar code 0:
Point 0: 48, 212
Point 1: 57, 84
Point 2: 188, 92
Point 3: 183, 220
Message: "qrcode 2"
Bar code 1:
Point 0: 26, 550
Point 1: 35, 409
Point 2: 174, 414
Point 3: 167, 555
Message: "qrcode 1"

Other examples are also provided in tutorial-barcode-detector.cpp and tutorial-barcode-detector-live.cpp

Examples:
tutorial-barcode-detector-live.cpp, and tutorial-barcode-detector.cpp.

Definition at line 114 of file vpDetectorQRCode.h.

Constructor & Destructor Documentation

vpDetectorQRCode::vpDetectorQRCode ( )

Default constructor.

Definition at line 51 of file vpDetectorQRCode.cpp.

References m_scanner.

virtual vpDetectorQRCode::~vpDetectorQRCode ( )
inlinevirtual

Definition at line 121 of file vpDetectorQRCode.h.

Member Function Documentation

bool vpDetectorQRCode::detect ( const vpImage< unsigned char > &  I)
virtual

Detect QR codes in the image. Return true if a code is detected, false otherwise.

Parameters
I: Input image.

Implements vpDetectorBase.

Definition at line 62 of file vpDetectorQRCode.cpp.

References vpImage< Type >::bitmap, vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), vpDetectorBase::m_message, vpDetectorBase::m_nb_objects, vpDetectorBase::m_polygon, and m_scanner.

vpRect vpDetectorBase::getBBox ( size_t  i) const
inlineinherited

Return the bounding box of the ith object.

Examples:
tutorial-barcode-detector-live.cpp, tutorial-barcode-detector.cpp, tutorial-face-detector-live.cpp, and tutorial-face-detector.cpp.

Definition at line 141 of file vpDetectorBase.h.

vpImagePoint vpDetectorBase::getCog ( size_t  i) const
inlineinherited

Return the center of gravity location of the ith object.

Definition at line 129 of file vpDetectorBase.h.

std::string& vpDetectorBase::getMessage ( size_t  i)
inlineinherited

Returns the contained message of the ith object if there is one.

Examples:
tutorial-barcode-detector-live.cpp, tutorial-barcode-detector.cpp, tutorial-face-detector-live.cpp, and tutorial-face-detector.cpp.

Definition at line 108 of file vpDetectorBase.h.

References vpException::badValue.

std::vector< std::string >& vpDetectorBase::getMessage ( )
inlineinherited

Returns the contained message of the ith object if there is one.

Definition at line 118 of file vpDetectorBase.h.

size_t vpDetectorBase::getNbObjects ( ) const
inlineinherited

Return the number of objects that are detected.

Examples:
tutorial-barcode-detector-live.cpp, tutorial-barcode-detector.cpp, tutorial-face-detector-live.cpp, and tutorial-face-detector.cpp.

Definition at line 125 of file vpDetectorBase.h.

std::vector< std::vector<vpImagePoint> >& vpDetectorBase::getPolygon ( )
inlineinherited

Returns object container box as a vector of points.

Examples:
tutorial-barcode-detector-live.cpp, tutorial-barcode-detector.cpp, tutorial-face-detector-live.cpp, and tutorial-face-detector.cpp.

Definition at line 90 of file vpDetectorBase.h.

std::vector<vpImagePoint>& vpDetectorBase::getPolygon ( size_t  i)
inlineinherited

Returns ith object container box as a vector of points.

Definition at line 98 of file vpDetectorBase.h.

References vpException::badValue.

Member Data Documentation

std::vector< std::string > vpDetectorBase::m_message
protectedinherited

Message attached to each object.

Definition at line 68 of file vpDetectorBase.h.

Referenced by vpDetectorFace::detect(), vpDetectorDataMatrixCode::detect(), and detect().

size_t vpDetectorBase::m_nb_objects
protectedinherited

Number of detected objects.

Definition at line 69 of file vpDetectorBase.h.

Referenced by vpDetectorFace::detect(), vpDetectorDataMatrixCode::detect(), and detect().

std::vector< std::vector<vpImagePoint> > vpDetectorBase::m_polygon
protectedinherited

For each object, defines the polygon that contains the object.

Definition at line 67 of file vpDetectorBase.h.

Referenced by vpDetectorFace::detect(), vpDetectorDataMatrixCode::detect(), and detect().

zbar::ImageScanner vpDetectorQRCode::m_scanner
protected

QR code detector.

Definition at line 117 of file vpDetectorQRCode.h.

Referenced by detect(), and vpDetectorQRCode().