오토핫키 커뮤니티

질문
2016.03.17 00:54

Gdip문의

조회 수 989 추천 0 댓글 4

Gdip를 이용해서

이미지를 찾는 것 까진 잘 됐습니다.

그런데 Gdip특성상 찾든 못찾든 찾았다고 뜨기 때문에

1을 찾을때까지 기다렸뎌서 2로 넘어가라로 만들고 싶은데

좋은 방버버 없을까요?


  • profile
    모노레인 2016.03.17 10:38

    GDIP 에서 이미지 서치 쓰면 결과 넘어올텐데요..?

  • fnwj 2016.03.17 11:47
    찾든 못찾든 결과값이 찾았다고 나와서 그걸 어떻게 해야할지 고민중이라서요...
  • profile
    모노레인 2016.03.17 11:51
    공개된 이미지 서치 함수에 보면 못 찾았을 경우 결과가 마이너스 값이 나오던데요?
  • 슉슉이 2016.03.17 20:25
    Gdip라이브러리 안에 있는 이미지서치함수 보니 찾을 때만 값을 반환하네요. 검색범위, 찾는 수, 투명도, 색값오차 등을 지정하면 몇개 찾았는지 값을 반환. 1개만 찾게하면 1개 이상 일치하는 이미지가 있으면 카운트을 1만 반환하고 필요시 좌표도 받을 수 있게 되어있네요.

    맨아래 라이브러리안의 이미지서치 함수 그대로 가져왔습니다. 맨마지막줄 보면 카운트한 수를 반환합니다. 즉 매칭되는 이미지가 없으면 절대 1이 나올 수 없죠.

    이런식으로 하심 될듯합니다.
    gdipToken := Gdip_Startup()
    스샷비트맵:= Gdip_CreateBitmapFromFile("스샷.png")
    찾을이미지비트맵 := Gdip_CreateBitmapFromFile("찾을이미지.png")
    매칭이미지수 := Gdip_ImageSearch(스샷비트맵,찾을이미지비트맵,,0,0,0,0,,,1,1)
    Gdip_DisposeImage(스샷비트맵)
    Gdip_DisposeImage(찾을이미지비트맵)
    Gdip_Shutdown(gdipToken)

    if (매칭이미지수 = 1)
    {
    msgbox, 매칭
    }
    else
    {
    msgbox, 비매칭
    }

    Gdip_ImageSearch(pBitmapHaystack,pBitmapNeedle,ByRef OutputList=""
    ,OuterX1=0,OuterY1=0,OuterX2=0,OuterY2=0,Variation=0,Trans=""
    ,SearchDirection=1,Instances=1,LineDelim="`n",CoordDelim=",") {
    If !( pBitmapHaystack && pBitmapNeedle )
    Return -1001
    If Variation not between 0 and 255
    return -1002
    If ( ( OuterX1 < 0 ) || ( OuterY1 < 0 ) )
    return -1003
    If SearchDirection not between 1 and 8
    SearchDirection := 1
    If ( Instances < 0 )
    Instances := 0
    Gdip_GetImageDimensions(pBitmapHaystack,hWidth,hHeight)
    If Gdip_LockBits(pBitmapHaystack,0,0,hWidth,hHeight,hStride,hScan,hBitmapData,1)
    OR !(hWidth := NumGet(hBitmapData,0))
    OR !(hHeight := NumGet(hBitmapData,4))
    Return -1004
    Gdip_GetImageDimensions(pBitmapNeedle,nWidth,nHeight)
    If Trans between 0 and 0xFFFFFF
    {
    pOriginalBmpNeedle := pBitmapNeedle
    pBitmapNeedle := Gdip_CloneBitmapArea(pOriginalBmpNeedle,0,0,nWidth,nHeight)
    Gdip_SetBitmapTransColor(pBitmapNeedle,Trans)
    DumpCurrentNeedle := true
    }
    If Gdip_LockBits(pBitmapNeedle,0,0,nWidth,nHeight,nStride,nScan,nBitmapData)
    OR !(nWidth := NumGet(nBitmapData,0))
    OR !(nHeight := NumGet(nBitmapData,4))
    {
    If ( DumpCurrentNeedle )
    Gdip_DisposeImage(pBitmapNeedle)
    Gdip_UnlockBits(pBitmapHaystack,hBitmapData)
    Return -1005
    }
    OuterX2 := ( !OuterX2 ? hWidth-nWidth+1 : OuterX2-nWidth+1 )
    OuterY2 := ( !OuterY2 ? hHeight-nHeight+1 : OuterY2-nHeight+1 )
    OutputCount := Gdip_MultiLockedBitsSearch(hStride,hScan,hWidth,hHeight
    ,nStride,nScan,nWidth,nHeight,OutputList,OuterX1,OuterY1,OuterX2,OuterY2
    ,Variation,SearchDirection,Instances,LineDelim,CoordDelim)
    Gdip_UnlockBits(pBitmapHaystack,hBitmapData)
    Gdip_UnlockBits(pBitmapNeedle,nBitmapData)
    If ( DumpCurrentNeedle )
    Gdip_DisposeImage(pBitmapNeedle)
    Return OutputCount
    }

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 원클릭 블루스택 해상도 설정 방법 4 파랑상 2016.03.12 0/0
질문 gui 드롭다운리스트 질문드려요 6 쵸쵸 2016.03.05 0/0
질문 외치기님이 올려주신 푸쉬블엣을 오핫이용해서 사용중... 3 지니블렉션 2016.03.29 0/0
질문 루프에서 변수값 호출에 관한 질문입니다 ㅠ 2 화프 2016.04.04 0/0
질문 오토핫키는 생성자 같은거 없나요? 3 reavil 2016.03.12 0/0
질문 SendMessage 또는 PostMessage 로 Gui를 Disable이 가... 1 타치코마 2016.03.10 0/0
자유 [ 메이플 ] 매크로 사용 가능여부 1 알씨다이 2016.03.16 0/0
질문 postmessage에서 인자로 쓰이는 윈 타이틀 2 우리유미씨 2016.03.26 0/0
질문 USB 고유코드가져오는코드인데 문법좀 바꿔주세요. 3 cjh71 2016.03.11 0/0
질문 함수안에서 다른 함수를 호출할 수 있나요? 3 거룩한검 2016.03.13 0/0
질문 이미지를 계속 누르고 있게할 방법이 있나요? 2 난느려 2016.03.29 0/0
질문 이미지 비교 질문 2 풍운대사 2016.03.11 0/0
질문 숫자이미지를 ocr로 안되는데 혹 다른 방법 있을까용?? 2 오켕 2016.03.13 0/0
자유 블택2 비활성클릭 성공하신분 잇으신가요 .. 4 미천성 2016.03.30 0/0
질문 화면에 웹브라우져 여러개 띄우고 각각 다른 프록시를 ... 1 오켕 2016.03.29 0/0
질문 adb서치 질문 1 fnwj 2016.03.16 0/0
질문 비활성 문자입력&붙여넣기 질문드려요 1 띨빵큐라 2016.03.29 0/0
질문 Gdip문의 4 fnwj 2016.03.17 0/0
질문 이미지 서치 도움좀 부탁드립니다. 13 뎅뎅 2019.08.17 0/0
질문 불규칙적으로 움직이는 이미지 파일 가리는방법이 있을... 1 개멍멍멍 2016.03.20 0/0
Board Pagination Prev 1 ... 777879808182838485 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글