Mercurial > mercurial > hgweb_mover2.cgi
diff src/testtune.cpp @ 0:7bf900d47e9e
start mover2
author | pyon@macmini |
---|---|
date | Sat, 15 Oct 2011 13:24:27 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/testtune.cpp Sat Oct 15 13:24:27 2011 +0900 @@ -0,0 +1,104 @@ +// Filename : testtune.cpp +// Last Change: 13-Oct-2011. +// + +#include "wx/utils.h" +#include "wx/file.h" +#include "wx/string.h" +#include "wx/app.h" +#include "wx/image.h" + +bool IsBlack( int r, int g, int b ) +{ + if ( r == 0 && g == 0 && b == 0 ) { + return true; + } + return false; +} + +wxString GuessHhs( wxString& file ) +{ + wxString hhs; + wxImage img( file, wxBITMAP_TYPE_JPEG ); + int sx = 1800; // start x + int sy = 315;; // start y + int bw = 60; // block width + int bh = 50; // block height + int area = bw * bh; + int black = 0; + int x, y; + unsigned char r, g, b; + + int max_n; + float max; + float bk; + 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++ ) { + r = img.GetRed( x, y ); + g = img.GetGreen( x, y ); + b = img.GetBlue( x, y ); + if( IsBlack( (int)r, (int)g, (int)b ) ) black++; + } + } + + bk = (float)black / area; + if ( max < bk ) { + max = bk; + max_n = n; + } + //wxPuts(wxString::Format(wxT("%d %f"),n,bk)); + black = 0; + } + 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.095713; + float zmax = 0.108600; + + wxFile f( file ); + long l = f.Length(); + float lmin = 2072393; + float lmax = 2346082; + + wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,l)); + if ( zmin < z && z < zmax + && lmin < l && l < lmax ) { + return true; + } + return false; +} + +int main( int argc, char **argv ) +{ + wxInitAllImageHandlers(); + wxString file = wxT("img999.jpg"); + + if ( IsMarksheet( file ) ) wxPuts(file+wxT(" is perhaps marksheet !")); + wxString hhs = GuessHhs( file ); + wxPuts(hhs); + +} +