Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ImageCanvasCheckerboardExtract.hh
1 #ifndef __ImageCanvasCheckerboardExtract_hh__
2 #define __ImageCanvasCheckerboardExtract_hh__
3 
4 #include "ImageCanvas.hh"
5 #include <Gui/StringConv.hh>
6 #include <Base/Math/Vector2.hh>
7 #include <Base/Geometry/HomgPoint2D.hh>
8 
9 namespace BIAS {
10 
11  /** @class ICECCallbackInterface
12  @ingroup g_gui
13  @brief callback interface for ImageCanvasCheckerBoardExtract
14 
15  instructions:
16  derive your class e.g. MyFrame from ICECCallbackInterface
17  and override the method CheckerboardSelected(...)to react to a finished
18  selection of a Checkerboard
19 
20  also declare a pointer to ImageCanvasCheckerBoardExtract, e.g.
21  ImageCanvasCheckerBoardExtract *_ic;
22 
23  to select The Checkerboard corners then call:
24  _ic->SelectCheckerBoardCorners(*this);
25  where *this is a reference to a ICECCallbackInterface
26  (if your class is derived from ICECCallbackInterface this is *this)
27 
28  @author ischiller 07/2007*/
29  class BIASGui_EXPORT ICECCallbackInterface{
30  public:
32  virtual ~ICECCallbackInterface();
33  /// this function should be overloaded
34  virtual void CheckerboardSelected(std::vector<HomgPoint2D > &corners,
35  bool bOnlyFourPointsGiven, bool valid=true);
36  };
37 
38  /** @class ImageCanvasCheckerboardExtract
39  @ingroup g_gui
40  @brief provides functionality for selection of checkerboard patterns
41  @author schiller 2007/08 */
42  class BIASGui_EXPORT ImageCanvasCheckerboardExtract : public ImageCanvas
43  {
44  public:
45  ImageCanvasCheckerboardExtract(wxWindow* parent, wxStatusBar* sbar=NULL,
46  int sbarid=0, wxWindowID id = -1,
47  const wxPoint& pos = wxDefaultPosition,
48  const wxSize& size = wxSize(640, 480),
49  long style = wxHSCROLL | wxVSCROLL |wxFULL_REPAINT_ON_RESIZE,
50  const wxString& name = AsciiToWx("CheckerboardExtract"));
52 
53  /** Call SelectCheckerboardCorners with an object derived from ICECallbackInterface.
54  The function CheckerboardSelected() should be overloaded in this object.
55  After rectangle selection is finished (4 clicks with left mouse,
56  right button cancels) the function obj.CheckerboardSelected() is called
57  with either 4 coordinates or xCorners*yCorners coordinates.
58  @author ischiller 07/2007 */
59  void SelectCheckerboardCorners(ICECCallbackInterface& obj,
60  bool allCorners,
61  bool autoInvalidate=false);
62 
63  /** Call DisplayCheckerboardCorners with an object derived from ICECallbackInterface.
64  The function CheckerboardSelected() should be overloaded in this object.
65  @author ischiller 07/2007 */
66  void DisplayCheckerboardCorners( std::vector<BIAS::Vector2<double> > &corners,
67  double rescaleFactor=1.0);
68 
69  void DisplayCheckerboardCorners( std::vector< BIAS::HomgPoint2D > &corners,
70  double rescaleFactor=1.0);
71 
72 
73  void ManuallySetSelectionMode(bool SelectAllCorners){
74  bEnforceAllCorners_ = SelectAllCorners;
75  for(unsigned i=0;i<allCheckerboardCorners_.size();i++)
76  allCheckerboardCorners_[i] = HomgPoint2D(0.0,0.0,1.0);
77  NumLeftClicks_=0;
78  };
79 
80  /** Set the checkerboard detector method
81  * @param detector 0 = OpenCV, 1 = OpenCV with CrossFilter fallback, 2=CrossFilter
82  * @author jordt 11/2010 */
83  void SetCheckerboardDetector( int detector);
84 
85  void SetPatternParameters(unsigned int xCorners, unsigned int yCorners);
86  void EnableCornerSelection(bool selectable=true);
87 
88  virtual void OnLeftMouseButton(wxMouseEvent &event);
89  virtual void OnMouseMove(wxMouseEvent &event);
90  virtual void OnRightMouseButton(wxMouseEvent &event);
91  virtual void OnPaint(wxPaintEvent& event);
92 
93  protected:
94  void DrawCheckerboardCorners_(double rescaleFactor = 1.0);
95  void RefreshDrawIm_();
96 
97  protected:
102  unsigned int xCorners_;
103  unsigned int yCorners_;
104  unsigned int NumLeftClicks_;
105 
107 
109 
110  std::vector<BIAS::HomgPoint2D > allCheckerboardCorners_;
111 
112  DECLARE_EVENT_TABLE()
113  }; // class
114 
115 
116 } // namespace
117 
118 
119 
120 #endif // __ImageCanvasCheckerboardExtract_hh__
wxString AsciiToWx(const char *thestring)
Converts a C string to a wxString.
Definition: StringConv.hh:32
display image in wx application, provides zoom and investigation functionality
Definition: ImageCanvas.hh:38
std::vector< BIAS::HomgPoint2D > allCheckerboardCorners_
provides functionality for selection of checkerboard patterns
callback interface for ImageCanvasCheckerBoardExtract
class BIASGeometryBase_EXPORT HomgPoint2D