Mercurial > mercurial > hgweb_searcher03.cgi
comparison src/marksheet.cpp @ 4:fdba695b99f1
More fast ( read from DB ).
Improve the precision of marksheet judgement.
| author | pyon@macmini |
|---|---|
| date | Wed, 11 Sep 2013 19:09:14 +0900 |
| parents | c066fde99517 |
| children | 52958cd4a073 |
comparison
equal
deleted
inserted
replaced
| 3:1a64119ab257 | 4:fdba695b99f1 |
|---|---|
| 1 // Filename : marksheet.cpp | 1 // Filename : marksheet.cpp |
| 2 // Last Change: 23-Aug-2013. | 2 // Last Change: 11-Sep-2013. |
| 3 // | 3 // |
| 4 | 4 |
| 5 #include "common.h" | 5 #include "common.h" |
| 6 #include "marksheet.h" | 6 #include "marksheet.h" |
| 7 | 7 |
| 55 } | 55 } |
| 56 | 56 |
| 57 return hhs; | 57 return hhs; |
| 58 } | 58 } |
| 59 | 59 |
| 60 bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ) | 60 bool IsMarksheet( wxString& file, double zmin, double zmax, long lmin, long lmax ) |
| 61 { | 61 { |
| 62 wxImage img( file, wxBITMAP_TYPE_JPEG ); | 62 wxImage img( file, wxBITMAP_TYPE_JPEG ); |
| 63 int black = 0; | 63 int black = 0; |
| 64 int x = 2465; | 64 int x = 2465; |
| 65 int h = 3500; | 65 int h = 3500; |
| 74 float z = (float)black / h; | 74 float z = (float)black / h; |
| 75 | 75 |
| 76 wxFile f( file ); | 76 wxFile f( file ); |
| 77 long l = f.Length(); | 77 long l = f.Length(); |
| 78 | 78 |
| 79 *brate = z; | 79 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,l)); |
| 80 *len = l; | |
| 81 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); | |
| 82 if ( zmin < z && z < zmax | 80 if ( zmin < z && z < zmax |
| 83 && lmin < l && l < lmax ) { | 81 && lmin < l && l < lmax ) { |
| 84 return true; | 82 return true; |
| 85 } | 83 } |
| 86 return false; | 84 return false; |
| 87 } | 85 } |
| 88 | 86 |
| 89 bool _IsMarksheet( wxString& file, float* brate, long* len ) | |
| 90 { | |
| 91 wxImage img( file, wxBITMAP_TYPE_JPEG ); | |
| 92 int black = 0; | |
| 93 int x = 2465; | |
| 94 int h = 3500; | |
| 95 unsigned char r, g, b; | |
| 96 | |
| 97 for ( int y=0; y<h; y++ ) { | |
| 98 r = img.GetRed( x, y ); | |
| 99 g = img.GetGreen( x, y ); | |
| 100 b = img.GetBlue( x, y ); | |
| 101 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; | |
| 102 } | |
| 103 float z = (float)black / h; | |
| 104 float zmin = 0.095713; float zmax = 0.108600; | |
| 105 | |
| 106 wxFile f( file ); | |
| 107 long l = f.Length(); | |
| 108 float lmin = 2072393; float lmax = 2346082; | |
| 109 | |
| 110 *brate = z; | |
| 111 *len = l; | |
| 112 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); | |
| 113 if ( zmin < z && z < zmax | |
| 114 && lmin < l && l < lmax ) { | |
| 115 return true; | |
| 116 } | |
| 117 return false; | |
| 118 } | |
| 119 | 87 |
| 120 wxString GetHhsName( wxString& hhsno ) | 88 wxString GetHhsName( wxString& hhsno ) |
| 121 { | 89 { |
| 122 wxString name; | 90 wxString name; |
| 123 | 91 |
