Mercurial > mercurial > hgweb_mover.cgi
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 |