LoginSignup
5
4

More than 3 years have passed since last update.

autoitの画像認識が動かないので別のやり方で。

Last updated at Posted at 2020-05-31

現状

現在、在庫更新の作業を自動するプログラムを作っています。
その作業の中で「accessのフォームにあるボタンを押す」作業があります。
ボタン画像を認識して、クリックするだけですが画像を認識してくれません。

googleでautoitの画像認識を探すと
こちらのツールを紹介したサイトばかりです。
ImageSearch Usage Explanation

こちらのツールを入れるとこの関数が動きますが
_ImageSearch('checkImage.bmp', 0, $x, $y, 0)

設定したbmpが悪いのかうまく認識してくれません。

別のUDF

世界中のautoitユーザーでも同じように動かない人が多いはずなので
「autoit  imagesearch  doesnt work」とgoogleで探すと、新しい画像認識があるみたいです。
(まだ3000DLしかされてないので紹介します。)

Image Search UDF 2.0.2.0
動作
AutoIT ImageSearch

こちらの中にある
_ImageSearch_Sample.au3で起動させると
「どの画像を認識しますか」と出てくるので画像部分を選択すると、自動でbmpが作られ
下記の設定をもとに動作してくれます。

_imagesearch.sample.au3
Global Const $Ask_On_Found = 0         #画像の座標を出す
Global Const $Mouse_Move_On_Found = 1  #画像にカーソルを合わせる
Global Const $Mouse_Click_On_Found = 0 #画像をクリック

↑のプログラムで生成したbmpを使って
オリジナル関数を_my_image_search_click(path)を作ってみました。
とにかく指定した画像を押せ関数です。

_my_image_search_click.au3
#include "_ImageSearch_UDF.au3"
#RequireAdmin

Global Const $Mouse_Click_On_Found = 1
Global Const $iSleep_Time=500
Global $sCount = 0

func _my_image_search_click($_Image_1)
While 1
    Sleep($iSleep_Time)
    $sCount += 1
    Local $return = _ImageSearch($_Image_1)
    If $return[0] = 1 Then
       If $Mouse_Click_On_Found Then MouseClick("left", $return[1], $return[2])
        Exit 0
    EndIf
    Sleep(200)
WEnd
EndFunc

都合がよいときに呼び出します。

_my_program.au3
#include "_my_image_search_click.au3"
_my_image_search_click("C:\Users\mypc\Desktop\access.bmp")

もともとsampleのプログラムで認識ができているので
書き換えたプログラムもうまく起動しました。
めでたし めでたし。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4