diff src/testtune.cpp @ 2:1ea4f7981ff5

create window.
author pyon@macmini
date Sun, 02 Oct 2011 18:44:03 +0900
parents 214f2908b8e4
children 3b734fd6ee2b
line wrap: on
line diff
--- a/src/testtune.cpp	Thu Sep 29 07:47:06 2011 +0900
+++ b/src/testtune.cpp	Sun Oct 02 18:44:03 2011 +0900
@@ -1,4 +1,9 @@
+// Filename   : testtune.cpp
+// Last Change: 29-Sep-2011.
+//
+
 #include "wx/utils.h"
+#include "wx/file.h"
 #include "wx/string.h"
 #include "wx/image.h"
 
@@ -10,10 +15,10 @@
     return false;
 }
 
-wxString GuessHhs( void ) 
+wxString GuessHhs( wxString& file ) 
 {
     wxString hhs;
-    wxImage img( wxT("img/img361.jpg"), wxBITMAP_TYPE_JPEG );
+    wxImage img( file, wxBITMAP_TYPE_JPEG );
     int sx = 1800;  // start x
     int sy = 315;;  // start y
     int bw = 60;    // block width
@@ -23,11 +28,13 @@
     int x, y;
     unsigned char r, g, b;
 
-    int max_n = -1;
-    float max = 0.0;
+    int max_n;
+    float max;
     float bk;
-    for ( int c=0; c<9; c++ ) {
-        for ( int n=0; n<9; n++ ) {
+    for ( int c=0; c<10; c++ ) {
+        max = 0.0;
+        max_n = -1;
+        for ( int n=0; n<10; n++ ) {
 
             for ( x=sx+bw*c; x<sx+bw*(c+1); x++ ) {
                 for ( y=sy+bh*n; y<sy+bh*(n+1); y++ ) {
@@ -38,25 +45,59 @@
                 }
             }
 
-            bk = (float)black/area;
+            bk = (float)black / area;
             if ( max < bk ) {
                 max = bk;
                 max_n = n;
             }
-            wxPuts(wxString::Format(wxT("%f"),bk));
+            //wxPuts(wxString::Format(wxT("%d %f"),n,bk));
             black = 0;
         }
-        hhs.Append( wxString::Format( wxT("%1d"), max_n ) );
+        hhs.Append( wxString::Format( wxT("%d"), max_n ) );
     }
 
     return hhs;
 }
 
+bool IsMarksheet( wxString& file )
+{
+    wxImage img( file, wxBITMAP_TYPE_JPEG );
+    int black = 0;
+    int x = 2465;
+    int h = 3500;
+    unsigned char r, g, b;
+
+    for ( int y=0; y<h; y++ ) {
+        r = img.GetRed(   x, y );
+        g = img.GetGreen( x, y );
+        b = img.GetBlue(  x, y );
+        if( IsBlack( (int)r, (int)g, (int)b ) ) black++;
+    }
+    float z = (float)black / h;
+    float zmin = 0.103428 * 0.95;
+    float zmax = 0.103428 * 1.05;
+
+    wxFile f( file );
+    long l = f.Length();
+    float lmin = 2181468 * 0.95;
+    float lmax = 2181468 * 1.05;
+
+    //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len));
+    if ( zmin < z && z < zmax
+      && lmin < l && l < lmax ) {
+        return true;
+    }
+    return false;
+}
+
 int main( int argc, char **argv ) 
 {
     wxInitAllImageHandlers();
-    wxString hhs = GuessHhs();
+    wxString file = wxT("img\\img081.jpg");
 
+    if ( IsMarksheet( file ) ) wxPuts(wxT("perhaps marksheet !"));
+    wxString hhs = GuessHhs( file );
     wxPuts(hhs);
+
 }