HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1218
ビーちゃん手書き6解決


ビーちゃん

リンク

2006/12/18(Mon) 00:11:50|NO.4164

脳トレみたいな感じのゲームを作りたいんですが、できればDSみたいに手書き入力にしたいのです。
ようするにマウスで書いた文字を認識できるようにしたいんですが、
あれはどういう原理になってるんでしょうか?HSPでできますか?



この記事に返信する


ふほ

リンク

2006/12/18(Mon) 02:15:26|NO.4169

HSPでも不可能ではないと思いますが、さすがにアルゴリズムまでは解りません。

いうまでも無いですが、HSP標準の機能に手書き文字の認識機能はありませんので、
自力で作ってやる必要が有ります。

たとえば「ひらがな」や「カタカナ」等の簡単な文字限定なら、
線を引いた回数「画数」と、線を引いた方向、線の位置等を大まかに拾い出せれば、
識別できるような気がします。

時々同じ様な事をかきますが、ここはあくまでHSPの質問掲示板なのであって、
文字識別のアルゴリズムの質問掲示板ではありません。
よって、文字識別のアルゴリズムそのものを問われると、この掲示板では
答えられる人は少ないと思います^^;

聞くなとはいいませんが、知識のある人がそう多くいるとは思えないので、非効率的かとw
聞かれても「知ってるわけあるか!!」とツッコミたくなりますしw
「文字識別 アルゴリズム」とか、そんな単語でググって見るのがいいかもしれません。
広大なネットの海のどこかには、必要な情報が眠っているものと思われます。
がんばってくださいね。



=,=

リンク

2006/12/19(Tue) 22:37:59|NO.4225

あれは人工知能辺りの技術に入ってくるかと
具体的には神経をシミュレートするみたいです。
ニューロンコンピューティング等で検索してみてください



GENKI

リンク

2006/12/19(Tue) 23:04:37|NO.4229

 パソコンだと身近にIMEパッドの手書き入力がありますね。
APIとかないのかな?IMEパッドを呼び出せばいいのかな?

 それと、あれは人工知能が必要なほどでもないきがします。
特徴点(点、線分の端、交点、とか…)抽出して相互のおおよその位置関係とって、文字のリストから該当文字を探す?



GENKI

リンク

2006/12/20(Wed) 00:44:52|NO.4233

この辺の記事が手がかりになるかな?
http://forums.belution.com/ja/vc/000/088/97s.shtml
どうにもよく分かりません。(^ ^;



As

リンク

2006/12/20(Wed) 20:09:26|NO.4252

一度それはやったことがあるんですが、モジュールを作成するまではできたのですが
挫折しました。

二つの画像の比較するモジュールですがこれは使えないでしょうか?



//比較除外色の情報をすべてクリア #deffunc imghclsdel dim IMGHCOLOR,1:return // 比較する対象から除外する色を指定 // imghclsadd R,G,B #deffunc imghclsadd int p1, int p2, int p3 if IMGHCOLOR=0{sdim IMGHCOLOR,64,0:IMGHCOLOR.(length(IMGHCOLOR)-1)=""+p1+","+p2+","+p3 }else{:IMGHCOLOR.(length(IMGHCOLOR))=""+p1+","+p2+","+p3:}:return //imgh 比較範囲X, 比較範囲Y, 比較元画像情報が入った変数,比較先画像情報が入った変数 //比較元画像変数名 = 画像があるバッファID, 左上X、左上Y //画像の相似率が%で帰ります。 #defcfunc imgh int p1,int p2,array p3, array p4 s2=ginfo(3):s8=0:gsel p3:mref s1,66:s11=ginfo_winx:s12=ginfo_winy:gsel p4:mref s9,66:s13=ginfo_winx s14=ginfo_winy:gsel s2:if (""+p3(0)+","+p3(1)+","+p3(2))!IMGHROOT{IMGHROOT=""+p3(0)+","+p3(1)+","+p3(2) s4=0:dim IMGHROOTTOP,p1+1,p2+1,3:gsel p3(0):repeat p2:s3=0:repeat p1:s10=((s12-1-(s4+p3(2)))*s11+(s3+p3(1)))*3 IMGHROOTTOP.s3.s4.0=peek(s1,s10+2):IMGHROOTTOP.s3.s4.1=peek(s1,s10+1):IMGHROOTTOP.s3.s4.2=peek(s1,s10) s3+:loop:s4+:loop}gsel p4(0):s4=0:s5=1:repeat p2:s3=0:repeat p1:s7=0:foreach IMGHCOLOR if (""+IMGHROOTTOP.s3.s4.0+","+IMGHROOTTOP.s3.s4.1+","+IMGHROOTTOP.s3.s4.2)=IMGHCOLOR.cnt{s7=1}loop if s7!1{s10=((s14-1-(s4+p4(2)))*s13+(s3+p4(1)))*3:s15=peek(s9,s10+2):s16=peek(s9,s10+1):s17=peek(s9,s10) s7=0:foreach IMGHCOLOR:if (""+s15+","+s16+","+s17)=IMGHCOLOR(cnt){s7=1}loop:if s7!1{ if (IMGHROOTTOP(s3,s4,0)=s15)&(IMGHROOTTOP(s3,s4,1)=s16)&(IMGHROOTTOP(s3,s4,2)=s17){s8+}else{s5=0}}else{ s8+}}else{s8+}s3+:loop:s4+:loop:gsel s2:s8=double(s8)/double((p1*p2)):return s8



ビーちゃん

リンク

2006/12/22(Fri) 17:16:19|NO.4328

たくさんの回答ありがとうございます。相当難しいようですね。
とりあえずキーボード入力で作って後でできたら手書き機能を追加しようと思います。
紹介していただいた方法をいろいろ試してみます。挫折しそうですが…。



ONION software Copyright 1997-2023(c) All rights reserved.