#ifdef _CH_
#pragma package
#endif
#ifndef _EiC
#include
#include
#include
#include
#include "basicOCR.h"
#endif
IplImage* imagen;
int red,green,blue;
IplImage* screenBuffer;
int drawing;
int r,last_x, last_y;
void draw(int x,int y){
//Draw a circle where is the mouse
cvCircle(imagen, cvPoint(x,y), r, CV_RGB(red,green,blue), -1, 4, 0);
//Get clean copy of image
screenBuffer=cvCloneImage(imagen);
cvShowImage( "Demo", screenBuffer );
}
void drawCursor(int x, int y){
//Get clean copy of image
screenBuffer=cvCloneImage(imagen);
//Draw a circle where is the mouse
cvCircle(screenBuffer, cvPoint(x,y), r, CV_RGB(0,0,0), 1, 4, 0);
}
/*************************
* Mouse CallBack
* event:
* #define CV_EVENT_MOUSEMOVE 0
* #define CV_EVENT_LBUTTONDOWN 1
* #define CV_EVENT_RBUTTONDOWN 2
* #define CV_EVENT_MBUTTONDOWN 3
* #define CV_EVENT_LBUTTONUP 4
* #define CV_EVENT_RBUTTONUP 5
* #define CV_EVENT_MBUTTONUP 6
* #define CV_EVENT_LBUTTONDBLCLK 7
* #define CV_EVENT_RBUTTONDBLCLK 8
* #define CV_EVENT_MBUTTONDBLCLK 9
*
* x, y: mouse position
*
* flag:
* #define CV_EVENT_FLAG_LBUTTON 1
* #define CV_EVENT_FLAG_RBUTTON 2
* #define CV_EVENT_FLAG_MBUTTON 4
* #define CV_EVENT_FLAG_CTRLKEY 8
* #define CV_EVENT_FLAG_SHIFTKEY 16
* #define CV_EVENT_FLAG_ALTKEY 32
*
**************************/
void on_mouse( int event, int x, int y, int flags, void* param )
{
last_x=x;
last_y=y;
drawCursor(x,y);
//Select mouse Event
if(event==CV_EVENT_LBUTTONDOWN)
{
drawing=1;
draw(x,y);
}
else if(event==CV_EVENT_LBUTTONUP)
{
//drawing=!drawing;
drawing=0;
}
else if(event == CV_EVENT_MOUSEMOVE && flags & CV_EVENT_FLAG_LBUTTON)
{
if(drawing)
draw(x,y);
}
}
int main( int argc, char** argv )
{
printf( "Basic OCR by David Millan Escriva | Damiles\n"
"Hot keys: \n"
"\tr - reset image\n"
"\t+ - cursor radio ++\n"
"\t- - cursor radio --\n"
"\ts - Save image as out.png\n"
"\tc - Classify image, the result in console\n"
"\tESC - quit the program\n");
drawing=0;
r=10;
red=green=blue=0;
last_x=last_y=red=green=blue=0;
//Create image
imagen=cvCreateImage(cvSize(128,128),IPL_DEPTH_8U,1);
//Set data of image to white
cvSet(imagen, CV_RGB(255,255,255),NULL);
//Image we show user with cursor and other artefacts we need
screenBuffer=cvCloneImage(imagen);
//Create window
cvNamedWindow( "Demo", 0 );
cvResizeWindow("Demo", 128,128);
//Create mouse CallBack
cvSetMouseCallback("Demo",&on_mouse, 0 );
//////////////////
//My OCR
//////////////////
basicOCR ocr;
//Main Loop
for(;;)
{
int c;
cvShowImage( "Demo", screenBuffer );
c = cvWaitKey(10);
if( (char) c == 27 )
break;
if( (char) c== '+' ){
r++;
drawCursor(last_x,last_y);
}
if( ((char)c== '-') && (r>1) ){
r--;
drawCursor(last_x,last_y);
}
if( (char)c== 'r'){
cvSet(imagen, cvRealScalar(255),NULL);
drawCursor(last_x,last_y);
}
if( (char)c== 's'){
cvSaveImage("out.png", imagen);
}
if( (char)c=='c'){
ocr.classify(imagen,1);
}
}
cvDestroyWindow("Demo");
return 0;
}
#ifdef _EiC
main(1,"mouseEvent.c");
#endif