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