• ベストアンサー

UWSCで取得したカラー情報からペイントする

UWSCのpeekcolorで取得したカラーコードを元に 絵をコピーさせるにはどうすれば良いでしょうか? 画像関係のプログラム経験が無い為お解かりに なる方お願いいたします。 具体的に解からない事。 1、 アルゴリズム的には、UWSCのpeekcolor命令を使い 配列変数にカラーコードを左上の座標から順に格納する と言う事位は解かるのですが、UWSCにpset系の命令が無いので どのようにした物かと悩んでおります。 他のプログラム言語に引き渡す方法もあるのでしょうが何の言語を どのように使って良いか想像もつきません。 2、取得した色情報に範囲を持たせる方法で色をハッキリさせるやり方   も解かればお願いします。 この様な、処理は今回だけなので、出来れば最も簡単に出来そうな 方法がお解かりになる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.1

UWSCはよく知らないのでもしかしたら変なことをしているかもしれませんが、とりあえず「メモ帳に16進ダンプ→バイナリエディタに書き込み」でBMPファイルを作ることができますね。 手順としては、 id = getid("メモ帳") for y = 0 to 31 for x = 0 to 31 color = peekcolor(x,31-y) sendstr(id, format(color,6,-1)) next next こんな感じで出力したものを、スペースを0に置換。 同サイズのBMPファイルを用意する。 バイナリエディタで開いて、データ部分にさっきの出力を貼り付け。 100×100で試したところ数分たっても止まらなかったので途中でやめて32×32で試してみました。これで10秒くらい。 バイナリエディタは「狐'sバイナリエディタ」というものを使いました。 2番については失礼ながら文章の意味が分りませんでした。

akaginoyama
質問者

お礼

サンプルありがとうございます。 >2番については失礼ながら文章の意味が分りませんでした。 自分だけ解かっていたようですみません。 ■質問2の補足 色の読み取り時に「マスクを掛ける」←(用語の意味が理解出来て居るか 自身無いです) 極端に表現するなら赤系の色は、全部赤のカラーコードに変換する処理の 事です。 説明になっているでしょうか? 「sendstr」 で読み取ったカラーコードをテキストに変換するわけですね。 ここまでは、良く解かりました問題は、 >同サイズのBMPファイルを用意する。 からなのですが、カラーコードを出力したメモ帳の拡張子をBMPに 変更して狐'sバイナリエディタにドロップしてみました。 16進コードが吐き出されました。 ■解からない部分の詳細 1 バイナリ編集や知識が全く無いので、これを画像に変換するには どうして良いかわかりません。 2 >スペースを0に置き換え スペースはメモ帳で開くと存在しているのですが、エディタで開くと スペースが無くなります、その場合はこのままで良いのでしょうか? 基礎知識にあたるかもしれませんが、特にプログラムもある種偏った バッチ処理等しか知らないど素人レベルなのです。 よろしければ、補足を頂けると幸いです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • tetsumyi
  • ベストアンサー率26% (1862/7127)
回答No.5

Pixia側で読み込める形式(BMPまたはJPG)にしておいてください。 スキャナで読み込んだ物は、最初は手動で操作してどの程度の調整が最適か調べる必要があります。 制御点は5 の方が良いかも知れませんので色々変更してみてください。 良い状態が見つかったならUWSCで自動で操作を覚えさせれば、そのまま使えと思います。

akaginoyama
質問者

お礼

カラーコードの羅列をBMPに変換する方法が解かりません。 No1さんにご教授頂いた、バイナリエディタから先に進めて いないのです。、 しばらく情報検索してみて解決出来なければ、別問題として 新たにスレを立てたいと思います。 皆さんのおかげで、大筋は解決です。 ありがとう、ございました。

全文を見る
すると、全ての回答が全文表示されます。
  • tetsumyi
  • ベストアンサー率26% (1862/7127)
回答No.4

pixiaは軽いソフトで負担になりませんし非常に便利です。 画像処理にはこのようなソフトの使用は結果を見ながら調整できますので非常に有効です。 実際にダウンロードして使ってみてください。 白黒をはっきりさせるには画像メニューから色調補正に入ります。 曲線項目を直線 チャンネルを明度 制御点を3 にします。 3つの小さい四角の制御点を動かして、どの程度の明るさから黒にしたり白にしたりするのが適当か見ながら自由に動かすことができます。

akaginoyama
質問者

お礼

ありがとうございます。 pixiaインストしました。 マニュアルを読むのに少し時間が掛かりそうなので 先に、解からない所だけ質問させてください。 テキストファイルにカラーコードと座標保存されている場合 それを、自動でPixiaにデータを引き渡すと言った処理はUWSC で行うのでしょうか? それともPixia側で読み込める形式にしておくのでしょうか? →現在取得したカラーデータをbmpファイルに変換できて無い  状態です。 詳しい手順などをご教授頂ければ、幸いです。

全文を見る
すると、全ての回答が全文表示されます。
  • tetsumyi
  • ベストアンサー率26% (1862/7127)
回答No.3

「色をハッキリさせる」 ということであればPixa等で読み込んでコントラスト等を調整することで解決できるなら、この処理をUWSCで自動化する方法でどうでしょうか? UWSCで1点づつの処理を行うと相当の時間が掛かると思います。 Pixa内での処理はCPUで直接画像データを処理しますので圧倒的に高速です。

akaginoyama
質問者

お礼

例 「色をハッキリさせる」 if 黒 > peekcolor(x,y) > グレー then "黒として表現します" と、この様な程度で良いのですが、カラーコードの並びは同色系統で 連番が振られているみたいですが、ただ、その辺も曖昧で良く解かりません。 Pixa自体も殆ど使えないので、この処理だけに使うと言うのも 気が重いのですが。 簡単に出来そうな、情報があればよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • tetsumyi
  • ベストアンサー率26% (1862/7127)
回答No.2

どこにコピーしたいのかわからないので間違っているかもしれませんが、 UWSCにはSAVEIMGがありますのでコピーする部分をファイルにして コピーさせたいアプリケーションでファイルメニューから開くこともできます。 または、普通にWindows上で範囲をドラッグして指定して編集からコピーして 他のアプリケーションに編集から貼り付ける方法を使うこともできますが 動作記録を自動で作成させてスクリプトを編集すれば簡単にできるのではないでしょうか?

akaginoyama
質問者

お礼

ありがとうございます。 始めに書いとけば良かったのですが、今回の目的が下記の様な処理のため OCR(http://ja.wikipedia.org/wiki/OCR) の様な物を画像の読み込み分析を行い、Webサイトや写真などの色の 割合を数値化したいと言う理由からなのです、申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコ

    UWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコードがあるかを判別して そこをクリックさせたいのですが、画像認識の場合 ACW(GETID("xxxxx"),880,0,800,600,0) CHKIMG("xxxx.bmp",0) x=G_IMG_X // 画像の座標をxへ代入 y=G_IMG_Y // 画像の座標をyへ代入 BTN(LEFT, CLICK, x+30, y-30, 60) x=G_IMG_X という命令で指定ウィンドウ内の画像を(x,y)座標に自動で代入してもらえるのですが、PEEKCOLORの場合はどういった書き方をすればいいのでしょうか?? 上手く言いたいことが伝わっているか不安ですが、理解できる方宜しくお願いします。

  • タッチパッドのタッチ座標取得

    C言語の命令で、ノートパソコンのタッチパッドがどの辺に触れられているかわかる命令を探しています。 例えば、タッチパッドの一番左上に触れたらX座標が0Y座標が0と表示されるプログラムを作りたいと思っております。 どうしてもわからないので、質問させていただきました。 すみませんが、よろしくお願いいたします。

  • UWSCの定義について

    UWSCで特定の位置の色の情報をR,G,Bそれぞれの変数にそれぞれのR,G,Bの値を入れるプログラムを書いたのですが別の関数がから RGBcolor(変数1,変数2) の形で呼び出しても PROCEDURE RGBcolor(pointx,pointy) RGBtemp = PeekColor(pointx,pointy) R = RGBtemp And $FF G =( RGBtemp And $FF00 ) / $100 B =( RGBtemp And $FF0000 ) / $10000 FEND が 2行目の RGBtemp = PeekColor(pointx,pointy) の部分で「定義が間違っています」というエラーが出るのですが何の定義が間違っててなぜエラーが出るのでしょうか?

  • UWSCでhtmlソースの文字列を取得したいです

    UWSCで、htmlソースコードの中の数字(1-3桁)を取得したいです。ブラウザはchromeを使う予定です。 取得するページには数字が多く存在するので、前後に固定文を入れて正確に数字を取得したいです。 固定文+取得する数字(1-3桁)+固定文 のように検索をかけたいです。 どのようなプログラムをかけばいいか教えて下さい。 よろしくお願いします。

  • chromeを使ってpost送信やhtml取得

    google chromeを使って、POST送信や、WEBページのソースコードを取得する方法を教えていただきたいです。 使いたいプログラミング言語はUWSC、VBS、Jスクリプトです。 UWSC>VBS>Jスクリプト の順、使えるようになれば嬉しいです。 どういったソースコードをかけばよいでしょうか。 よろしくお願いします。

  • PHPでサイトのボタンを押す方法 UWSC⇒PHP

    私はいままで、UWSCというマクロをつかってプログラムを作っていたのですが、今後マックにPCを帰ることになったので、使う言語を少しかじっているPHPに変えたいと考え、勉強しております。 UWSCで、比較的よく使うサイトの「ボタンを押す」方法がPHPのマニュアルを読んでも書かれていなかったので、質問させてください。 UWSCのウェブ記録そのままで申し訳ないのですが、UWSCならヤフーを開いて IESetData(IE,"PHPがんばるぞ","p") // TEXT IESetData(IE,True,"","検索") // SUBMIT と、命令すれば「PHPがんばるぞ」と入力して検索ボタンを押してくれます。このような処理をPHPにさせる方法をおしえてください。 もちろん、 変数="PHPがんばるぞ" "http://search.yahoo.co.jp/search?p=".変数 とすれば、結果が出せるのはわかっているのですが、メールを送信したり、買い物カートの購入ボタンを押させるなどしたいので、あくまでボタンを押す方法をお願いします。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • UWSCによる色識別がWin7だとできない

    UWSCでPEEKCOLORを使い、指定した座標の色を識別して、キーを押すといった動作をさせたいのですが、 XPのPCだと正常に動作するのに、Win7のPCになると何も動作が起きず上手くいきません。 同じスクリプト文を使用しているにも関わらず、Win7だと動作起きないのは、色を識別する方法が異なるのでしょうか? 動作文は以下の通りです。 While True ifb PEEKCOLOR(198,68) = $845539 then   Kbd(VK_F4,DOWN,30)   Kbd(VK_F4,UP,30) else   Endif ifb PEEKCOLOR(198,56) = $845539 then   Kbd(VK_F5,DOWN,30)   Kbd(VK_F5,UP,30) else Endif WEND 色を調べる方法として、WinXP・7共に次のものを使用しました。 OLD_X = 0 OLD_Y = 0 OLD_COLOR = 0 while TRUE   WIN_ID = GetID(GET_ACTIVE_WIN)   MOUSEORG(WIN_ID)   BASE_X = STATUS(WIN_ID, ST_X)   BASE_Y = STATUS(WIN_ID, ST_Y)   ifb GETKEYSTATE(VK_LBUTTON) then     NEW_X = G_MOUSE_X; NEW_Y = G_MOUSE_Y     OFF_X = NEW_X - BASE_X; OFF_Y = NEW_Y - BASE_Y     c=PeekColor(OFF_X, OFF_Y)     ifb NEW_X <> OLD_X OR NEW_Y <> OLD_Y OR c <> OLD_COLOR then       PRINT "X="+(OFF_X)+"/Y="+(OFF_Y)+"/赤="+(c and $FF)+"/緑="+((c and $FF00)/$100)+"/青="+((c and $FF0000)/$10000)+"/BGR値=$"+FORMAT( c,6,-1 )     endif     OLD_X = NEW_X; OLD_Y = NEW_Y; OLD_COLOR = c   endif   sleep(1) wend 色々調べてみましたが、やはりWin7でのみ動作しなくて困っています。 原因が分かる方、助言お願いします。

  • UWSCの画像認識について

    プログラム初心者ですがUWSCでプログラムを作っています 画像認識において認識するべき画像が複数種類あるときのパターンができなくて困っています ifb CHKIMG("青空") x=G_IMG_X // 画像の座標をxへ代入 y=G_IMG_Y // 画像の座標をyへ代入 BTN(LEFT,CLICK,x,y,100) SLEEP(0.5) else Endif のように、単独の画像を認識し、その画像をクリックさせることはできるのですが 「青空」もしくは「夕空」もしくは「夜空」が出た時にその画像をクリックする のような命令をかくことができません ifb CHKIMG("青空" or "夕空" or"夜空") のような形でかければいいのですが、もちろんこれでは動きませんでした どうすればこれを実行できるようになるのか教えてくださいm(__)m

  • カラーコードから色名を逆引きしたい

    カラーコードから色名を逆引きしたい ペイントソフトなどのスポイトツールを使うと、#000000といったカラーコードを取得できますが カラーコードから○○色など色名を調べたいです。 そのような事ができる、Webサービス・ソフトウェアがあったら教えて頂きたいですm(_ _)m

  • JavaScriptで色見本からカラーコードを抜き出すソースを探してい

    JavaScriptで色見本からカラーコードを抜き出すソースを探しています。 adobeのfireworksなどにあるようなカラーコードを座標から選び出すようなサンプルコードを探しています。 参考URLだけでもかまいませんので宜しくお願いいたします。

専門家に質問してみよう