comparison src/testtune.cpp @ 2:1ea4f7981ff5

create window.
author pyon@macmini
date Sun, 02 Oct 2011 18:44:03 +0900
parents 214f2908b8e4
children 3b734fd6ee2b
comparison
equal deleted inserted replaced
1:214f2908b8e4 2:1ea4f7981ff5
1 // Filename : testtune.cpp
2 // Last Change: 29-Sep-2011.
3 //
4
1 #include "wx/utils.h" 5 #include "wx/utils.h"
6 #include "wx/file.h"
2 #include "wx/string.h" 7 #include "wx/string.h"
3 #include "wx/image.h" 8 #include "wx/image.h"
4 9
5 bool IsBlack( int r, int g, int b ) 10 bool IsBlack( int r, int g, int b )
6 { 11 {
8 return true; 13 return true;
9 } 14 }
10 return false; 15 return false;
11 } 16 }
12 17
13 wxString GuessHhs( void ) 18 wxString GuessHhs( wxString& file )
14 { 19 {
15 wxString hhs; 20 wxString hhs;
16 wxImage img( wxT("img/img361.jpg"), wxBITMAP_TYPE_JPEG ); 21 wxImage img( file, wxBITMAP_TYPE_JPEG );
17 int sx = 1800; // start x 22 int sx = 1800; // start x
18 int sy = 315;; // start y 23 int sy = 315;; // start y
19 int bw = 60; // block width 24 int bw = 60; // block width
20 int bh = 50; // block height 25 int bh = 50; // block height
21 int area = bw * bh; 26 int area = bw * bh;
22 int black = 0; 27 int black = 0;
23 int x, y; 28 int x, y;
24 unsigned char r, g, b; 29 unsigned char r, g, b;
25 30
26 int max_n = -1; 31 int max_n;
27 float max = 0.0; 32 float max;
28 float bk; 33 float bk;
29 for ( int c=0; c<9; c++ ) { 34 for ( int c=0; c<10; c++ ) {
30 for ( int n=0; n<9; n++ ) { 35 max = 0.0;
36 max_n = -1;
37 for ( int n=0; n<10; n++ ) {
31 38
32 for ( x=sx+bw*c; x<sx+bw*(c+1); x++ ) { 39 for ( x=sx+bw*c; x<sx+bw*(c+1); x++ ) {
33 for ( y=sy+bh*n; y<sy+bh*(n+1); y++ ) { 40 for ( y=sy+bh*n; y<sy+bh*(n+1); y++ ) {
34 r = img.GetRed( x, y ); 41 r = img.GetRed( x, y );
35 g = img.GetGreen( x, y ); 42 g = img.GetGreen( x, y );
36 b = img.GetBlue( x, y ); 43 b = img.GetBlue( x, y );
37 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; 44 if( IsBlack( (int)r, (int)g, (int)b ) ) black++;
38 } 45 }
39 } 46 }
40 47
41 bk = (float)black/area; 48 bk = (float)black / area;
42 if ( max < bk ) { 49 if ( max < bk ) {
43 max = bk; 50 max = bk;
44 max_n = n; 51 max_n = n;
45 } 52 }
46 wxPuts(wxString::Format(wxT("%f"),bk)); 53 //wxPuts(wxString::Format(wxT("%d %f"),n,bk));
47 black = 0; 54 black = 0;
48 } 55 }
49 hhs.Append( wxString::Format( wxT("%1d"), max_n ) ); 56 hhs.Append( wxString::Format( wxT("%d"), max_n ) );
50 } 57 }
51 58
52 return hhs; 59 return hhs;
53 } 60 }
54 61
62 bool IsMarksheet( wxString& file )
63 {
64 wxImage img( file, wxBITMAP_TYPE_JPEG );
65 int black = 0;
66 int x = 2465;
67 int h = 3500;
68 unsigned char r, g, b;
69
70 for ( int y=0; y<h; y++ ) {
71 r = img.GetRed( x, y );
72 g = img.GetGreen( x, y );
73 b = img.GetBlue( x, y );
74 if( IsBlack( (int)r, (int)g, (int)b ) ) black++;
75 }
76 float z = (float)black / h;
77 float zmin = 0.103428 * 0.95;
78 float zmax = 0.103428 * 1.05;
79
80 wxFile f( file );
81 long l = f.Length();
82 float lmin = 2181468 * 0.95;
83 float lmax = 2181468 * 1.05;
84
85 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len));
86 if ( zmin < z && z < zmax
87 && lmin < l && l < lmax ) {
88 return true;
89 }
90 return false;
91 }
92
55 int main( int argc, char **argv ) 93 int main( int argc, char **argv )
56 { 94 {
57 wxInitAllImageHandlers(); 95 wxInitAllImageHandlers();
58 wxString hhs = GuessHhs(); 96 wxString file = wxT("img\\img081.jpg");
59 97
98 if ( IsMarksheet( file ) ) wxPuts(wxT("perhaps marksheet !"));
99 wxString hhs = GuessHhs( file );
60 wxPuts(hhs); 100 wxPuts(hhs);
101
61 } 102 }
62 103