From 77f4f3f0a48802a6797c98e599ac83ab20b9966a Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Thu, 4 Aug 2022 15:30:29 +0000 Subject: [PATCH] Do iterative testing to find the best possible params Co-authored-by: sigonasr2 --- ArcadeReader.java | 86 +++++++++++++++++++++++++++++++++++++++++++--- result.png | Bin 0 -> 858 bytes test.png | Bin 0 -> 1013 bytes 3 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 result.png create mode 100644 test.png diff --git a/ArcadeReader.java b/ArcadeReader.java index 0cbe32f..aabcd34 100644 --- a/ArcadeReader.java +++ b/ArcadeReader.java @@ -1,15 +1,80 @@ import java.io.File; -import java.io.IOException; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.awt.Graphics2D; import java.awt.Font; -import java.awt.FontFormatException; import java.awt.Color; public class ArcadeReader { + char getClosestCharacter(char[]list,int[][]pixelData,BufferedImage input,int s1,int s2,int s3,int s4) throws Exception{ + if (input.getWidth()!=128&&input.getHeight()!=128) { + throw new Exception("Width and Height must be 128!"); + } + for (int x=0;x<128;x++) { + for (int y=0;y<128;y++) { + if (input.getRGB(x,y)!=Color.BLACK.getRGB()) { + input.setRGB(x,y,Color.WHITE.getRGB()); + } + } + } + BufferedImage img = new BufferedImage(128,128,BufferedImage.TYPE_INT_ARGB); + Graphics2D g = img.createGraphics(); + g.setColor(Color.WHITE); + g.setBackground(Color.BLACK); + g.clearRect(0, 0, 128, 128); + g.drawImage(input,0,0,null); + int topMost=128; + int leftMost=128; + for (int x=0;xmaxSimilarityScore) { + maxSimilarityScore=similarityScore; + maxSimilarity=c; + System.out.println(c+" matches with a score of "+similarityScore); + } + similarityScore=0; + } + g.dispose(); + return maxSimilarity; + } public ArcadeReader() { /* Noto Sans Japanese @@ -106,9 +171,20 @@ public class ArcadeReader { } g.dispose(); //ImageIO.write(img,"png",new File("character.png")); - Image input = ImageIO.read(new File("character.png")); - char closest = getClosestCharacter(character,pixelData,input); - } catch (FontFormatException | IOException e) { + BufferedImage input = (BufferedImage)ImageIO.read(new File("test.png")); + for (int s1=0;s1<10;s1++) { + for (int s2=0;s2<10;s2++) { + for (int s3=-9;s3<1;s3++) { + for (int s4=-9;s4<1;s4++) { + char closest = getClosestCharacter(character,pixelData,input,s1,s2,s3,s4); + if (closest=='ホ') { + System.out.println("\n Got ホ using params: "+s1+"/"+s2+"/"+s3+"/"+s4+"\n"); + } + } + } + } + } + } catch (Exception e) { e.printStackTrace(); } diff --git a/result.png b/result.png new file mode 100644 index 0000000000000000000000000000000000000000..de5a3b708717940ce69734c42b9af7d76c9ff502 GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU{>^WaSW-5dwcO>-eUs+=ZpXT z`@dhrDV1L#TJ84r4Y%h52EpuCj(>jv!RP%Yi*8FaC;6!F>NV6j7P5G^L~D|d>8|cT zk~pO@VUaxBLKpA8f8oXb$Mc(=#rPk*v#?0{$ndU@6b|3f8CfObivxOAx|JJpVdKQy z`l}AKr|WL)h8^Yuae7m>)p%mT9*hf z56~%H{QI2juGjDOFTVYQ<7kljuDACV?tb@AeOJG#$c4_l@^=^So|Cn|Sj)h*!mWIj z)ZLYNCGzlvt6lcr4D5Zk3m8Hb&5xG;s<_&| z4ivDix9?v3oh;I|ZTI5u$2CN9%iZ7i2Wo7)Be~bwZQ+fg^e^v#so-?%#p-04F5Pn1 z_q~NcNzuLL#}?lBbo)i^$NLL7^feA~cYSD5+B5W+%Jqzag_q~w+vC^*%rgw0u6{1- HoD!MUa@a}+sq$F zy`EM6yD69rw27gi>hGodyGpENr^cK+ckb8UeOeK1_Hny+@9sK0X~ojmdGqIsicG%$ ztJ~p~-+>C7FwLi5zlJWIab<49$&^Jwr!q`}G}U+<8z(j#@Nh^_Q7{k^h`7g6Vm0^n z?b~td(_7_t#BcTg`jzu*(BT{9m)pLkNAG-V;v4``DZ$Cn!@}am#H7sF__S6n=k}br zb7i&f+_|H&UgUD#c5^ecke}~9e*F08k<-+pTcg&VJ$v?H!H)g=*H532Casz~Gbm^M z@&z*tSXd!O0Nt?4)8VZ7id@fSLPGiZ`OOC%MAuJRz2NZS!%uh$^=95#^L4VAPXu%6 z?pRrG&1np;6U$1BW@>z~uRH#ue{1)x$Gg|42eS$lR90GE{?fU8xw@;%X*QPh%PMQq zm*`(|6)vc$S#wygx0Ye%<#pI@+JN)qP>f3stLt1n30cwoHw%bbUi^F_QH zW?BnquKSqtaAE$OgZ4_|ehnYjcO*qlohHL|O67otiSy_Dz$x(}(|j80Uu<67m96Ff zd8WQnpQnRI>Dn#u5ZKZg(V^d-gXtsn1XG+$f8H@9S$jyihARORh3) z&iwhSzhv6T&7U_fFE@APJ%ep$=D*_#yVmF$a)bHImz#?!ER1W-)t>JvcH7G7Vb>qa zb#`Xy=MU%exAA|#>i_@&{Lg*k8W+&Obrv`n(e_T}GeY2^Kq zQD0wQD{J1@N>Cnp!;RJkp9v*cACHfHI*GZ`kA9E^|leXH8*c6S>KC`;f2 d2VO-*|K@Id%2`lx^*u94rKhW(%Q~loCIHBd#?}A; literal 0 HcmV?d00001