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