Easy python image search algorithm for macro

Поделиться
HTML-код
  • Опубликовано: 24 сен 2024
  • #imagesearch #python #coding #macro #algorithm #pyautogui
    You should not miss next video
    • 파이썬 매크로용 이미지 서치 알고리즘 만...
    ※ Programming Code
    blog.naver.com...

Комментарии • 82

  • @냠냠-m5k7x
    @냠냠-m5k7x 2 года назад +1

    감사합니다 찾고있었던건데 설명도 잘해주셔서 이해가잘됐습니다감사합니다

  • @메카니즘
    @메카니즘 4 года назад +2

    감사합니다..지난번에 한번 문의드렸었는데 ㅋㅋ 👍

  • @mama-yf3yt
    @mama-yf3yt 4 года назад +2

    알고 싶었던 것인데 강좌 해주셔서 정말 고맙습니다~~

    • @chobocoding
      @chobocoding  4 года назад

      도움이 됐으면 좋겠네요 ㅎㅎ

  • @김덕배-u1z
    @김덕배-u1z 4 года назад +1

    항상 감사합니다. 영상들 참고하면서 매우 도움이 되고있습니다!

    • @chobocoding
      @chobocoding  4 года назад

      감사합니다 ㅎㅎ💪

    • @김덕배-u1z
      @김덕배-u1z 4 года назад

      초보코딩 기회가 된다면 요 강의내용에서 추가로 비활성창에서 동작하는 강의도 해주시면 좋겠네요 ㅎㅎ

    • @chobocoding
      @chobocoding  4 года назад +1

      김덕배 비활성창에서 하는 것은 제가 실력이 부족해서 어려운 것 같습니다 ㅠㅠ 향후에 할 수 있게 된다면 만들어 올리도록 할게요 ㅎㅎ

    • @김덕배-u1z
      @김덕배-u1z 4 года назад +1

      초보코딩 헉 그렇군요 ㅠㅠ 어제부터 계속 구글링 중인데 어렵네요,,,
      전체화면 이미지파일을 실시간으로 받아오고, 특정 부분 이미지 파일을 찾아서 좌표로 반환하고 싶은데 쓸만한 라이브러리를 못 정하겠습니다 ㅠㅠ 혹시 아시는게 있을까요?
      비활성창 캡처까진 구현했는데 이미지 비교, 좌표반환 에서 막혔네요 컥

    • @chobocoding
      @chobocoding  4 года назад +1

      이미지끼리 비교하는것은 opencv를 쓰셔야할 것 같은데 저도 아직 공부가 부족한 분야라 설명 드리기가 어렵네요~

  • @하만칸
    @하만칸 3 года назад +3

    파이썬으로 매크로 만들면서 궁금한게 모니터 해상도 라던지 색상의 미세한 차이라던지 다른 차이가 있는
    다른 PC 환경에서는 매크로 프로그램을 만들어서 그 PC에서 실행해도 좌표 값이 달라지거나 rgb 값이 달라져서 결국 무용지물이더라구요
    그럴때는 어떻게 해야 하는지도 영상 부탁드립니다 ㅠ

    • @chobocoding
      @chobocoding  3 года назад

      사실 그럴때는 컴퓨터 환경마다 코드를 바꾸는 수 밖에 없을 것 같아요. 초보자 수준에서 코드를 완벽하게 만들어서 모든 상황에서 적용하는 것은 어렵겠죠. 상황에따라 쉽게 코드를 바꿀 수 있도록 여러 상황에 맞춰서 코드를 바꿔가며 익숙해지는 방법 밖엔 없는 것 같습니다~

  • @개평
    @개평 2 года назад +1

    선생님 영상 너무 잘보아서 날밤깟습니다;; 우선 선생님 영상보고 궁금한점에 생겻는데 선생님 다른영상 및 유툽 다른 코딩 영상 찾아보아도 제 눈에는 안보입니다ㅜㅜ
    질문 : 본영상에서 토끼 이미지 6개를 마우스가 찾아갈수있도록 하는데 .토끼 이미지 6개 중 이미 한번 찾은 이미지는 다시 못찾아가게 하는 방법이 있을까요? 목적은 네이버 카페나 기타 특정 검색창에서 제가 찾는 단어의 게시글을 검색 및 작업완료 후 다시 같은단어로 재검색 해서 이미 작업완료한 글이 아닌 새로운 글에만 지속적인 작업을 하고 싶습니다. 방식은 이미지를 마우스 찾아가던, 크롬을 제어 해서 그f12로 작업하는걸로 하던 상관은 없는데 아무리 찾아바도 저의눈에는 왜 안보일까요?ㅜㅜ

    • @chobocoding
      @chobocoding  2 года назад

      우선 한번 찾은 이미지는 제외하고자 한다면 각 위치를 변수에 저장해놨다가 그 주변 위치는 제외하도록 로직을 구성하면 될듯합니다. 다만 말끔하신 단어를 기준으로 작업을 원하신다면 이미지 기반이 아닌 셀레니움을 통해 하는것이 나을 듯 합니다.

    • @개평
      @개평 2 года назад

      @@chobocoding 감사합니다!!! 항상 응원하겠습니다

  • @dahoonkang4563
    @dahoonkang4563 4 года назад +2

    궁금한게 있습니다. 제가 지금 실습해보고 있는데, 더블모니터에서 문제가 발생합니다. 왼쪽 오른쪽 모니터가 있을때 오른쪽 모니터를 주 모니터로하고 왼쪽모니터의 x좌표값이 - 로 시작해서 그런지는 잘 모르겠습니다만 오른쪽모니터가 주 모니터이고 왼쪽모니터가 부 모니터일 때 왼쪽모니터의 t1, t2 값을 찍으니 스크린샷은 작동되지만 파일에 화면이 출력되지않고 지정한 사이즈의 까만색만 있는 find.png가 생성됩니다. 혹시 어떻게 해결할 수 있을지 아실까요?
    p.s 왼쪽모니터를 주 모니터로하면 오른쪽모니터( 부 모니터 ) 의 스크린샷이 또다시 까만색이 됩니다.

    • @chobocoding
      @chobocoding  4 года назад

      듀얼모니터로 하게되면 문제가 좀 발생하긴 합니다. 그래서 저는 이 알고리즘 쓸때 모니터 하나를 끄고 사용합니다.

  • @Heo2mo
    @Heo2mo 4 года назад +1

    너무 좋은 영상 잘봤습니다.
    pag 라이브러리 키 입력이 안먹히는 게임이 있는데 이런 경우는 어떻게해야할까요?

    • @chobocoding
      @chobocoding  4 года назад

      저는 게임에 적용해본 적이 없어서 조언을 드리기가 어렵습니다 ~

  • @user-zs5tb9er6c
    @user-zs5tb9er6c 3 года назад +2

    원하는 이미지를 찾으면 디스코드에 연락할수있는것도 여기서 만드는건가요?

    • @chobocoding
      @chobocoding  3 года назад

      디스코드와 연동시키려면 좀 더 코드를 발전시켜야겠지만 가능은 할 것 같네요

  • @이황상-u5g
    @이황상-u5g 4 месяца назад

    감사하게 봤습니다. 원본.png 파일과 targetting.png 파일의 구분 저장방법에 대하여 이해가 잘 않됩니다.?

  • @hansaebyeok
    @hansaebyeok 2 года назад +2

    img_list = pag.LocateAllOnScreen(r"C:\Users\USER\Desktop\프로그래밍\발로란트 이미지 서칭\img/img.png", confidence=0.98)
    list(img_list)
    이 구문에서
    AttributeError: module 'pyautogui' has no attribute 'LocateAllOnScreen'
    라는 에러가 나네요 ㅠㅜ

    • @chobocoding
      @chobocoding  2 года назад

      함수이름의 대소문자 구분을 하셔야 합니다~

  • @TV-vp8ze
    @TV-vp8ze Год назад +1

    import pyautogui,time
    import winsound as sd
    def beepsound():
    fr = 2000 # range : 37 ~ 32767
    du = 1000 # 1000 ms ==1second
    sd.Beep(fr, du) # winsound.Beep(frequency, duration)
    def findanything():
    if pyautogui.locateOnScreen('aa.png',confidence=0.8):
    print("나타남")
    beepsound()
    else:
    print("없음")
    while 1:
    findanything()
    time.sleep(2)
    2초에 한번씩 특정한 이미지가 있는지 찾고 찾는 이미지가 있다면 비프음을 출력하는 예제 코드인데요
    리눅스에서 사용하려면 어떻게 해야하나요?

    • @TV-vp8ze
      @TV-vp8ze Год назад

      import os
      os.system("play -n synth 0.1 sine 880 vol 0.5")
      비프음내는 리눅스 사용가능한 예제인데 어떻게 응용해야하나요?

    • @chobocoding
      @chobocoding  Год назад

      blog.finxter.com/how-to-make-a-beep-sound-in-python-linux-macos-win/
      참고해 보세요~

  • @bluemoon_223
    @bluemoon_223 2 года назад +1

    p_list = pag.locateAllOnScreen(“파일위치.find.png”)는 잘 작동하는데 confidence넣으니까 오류나네요 혹시나 하고 pip install confidence 다음에 import confidence까지 해봤는데도 안되네요 어떻게 해야하나요?

    • @chobocoding
      @chobocoding  2 года назад

      confidence 기능을 사용하려면 opencv를 설치해야 합니다.
      tariat.tistory.com/651

    • @bluemoon_223
      @bluemoon_223 2 года назад

      @@chobocoding 감사합니다!

  • @karewangja
    @karewangja 3 года назад +1

    안녕하세요! 혹시 네이버스토어에 있는 이미지를 사전에 인식해서 그 이미지의 제품이 등록되면 자동으로 클릭 할 수 있게 매크로 짜는게 가능할까요?

    • @chobocoding
      @chobocoding  3 года назад

      제 능력으로는 안 됩니다

  • @양성아-q2x
    @양성아-q2x 3 года назад +1

    안녕하세요 질문 좀 하나 드리려고합니다~
    pag.screenshot("C:/test/test.png". region = region1) 이문구를 실행하면
    SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
    이런 에러가 뜨는데 이유가 뭘까요..?

    • @chobocoding
      @chobocoding  3 года назад

      png" 다음에 점이 아니라 콤마입니다

    • @피치엔
      @피치엔 3 года назад

      == 짝대기 2개 넣으니까 돼요!

  • @양성아-q2x
    @양성아-q2x 3 года назад +2

    항상 강의 잘 듣고 있습니다
    한가지 에러 문의 드리면
    pag.screenshot =

    • @chobocoding
      @chobocoding  3 года назад

      코드에 오타가 있는것 같은데 오류난 줄 코드가 어떻게 되시죠?

    • @양성아-q2x
      @양성아-q2x 3 года назад

      @@chobocoding 영상보고 똑같이 하긴했는데..
      region1 = (t1[0]. t1[1]. t2[0]-t1[0]. t2[1]-t1[1]
      입니다~

    • @chobocoding
      @chobocoding  3 года назад

      점이 아니라 쉼표로 하셔야 해요

    • @양성아-q2x
      @양성아-q2x 3 года назад

      @@chobocoding 아 넵!

  • @amigaringo1672
    @amigaringo1672 4 года назад +1

    키보드 모듈에서 F4말고 다른키로도 해보고 싶은데 뭐라고 적으면 되나요? 예를들어 컨트롤이나 알트 스크롤락 등등.. 또 이런것들은 어디서 조회해야 하나요

    • @chobocoding
      @chobocoding  4 года назад

      구글에서 검색하시는게 좋을 것 같습니다. 저도 다 알고 있는게 아니라서요~

  • @츄현-j8v
    @츄현-j8v 3 года назад +1

    선생님 매크로를 다 만들어서 하다가 창이 꺼져서 저장된걸 불러왔는데 NAMEERROR TRACEBACK 이런식으로 뜨는데 어뜨케 해야하는건가여..? 좌표를 다시 다 설정해줘야하는건가요?

    • @chobocoding
      @chobocoding  3 года назад

      네 다시 좌표를 설정해줘야 합니다

  • @soolimsong4591
    @soolimsong4591 3 года назад +1

    주피터 노트북에서 일부 단축키 실행(tab관련 도움말과 주석처리)이 안돼서 ctrl+shift를 눌러도 안되는데 방법이 있을까요?

    • @chobocoding
      @chobocoding  3 года назад

      잘 모르겠습니다 해당 현상에 구글에서 검색해보시는게 좋을 것 같네요.

  • @imie143
    @imie143 4 года назад +1

    a라는 큰 이미지의 파트가 있고 b라는 파트에 총 8개로 구성되어 4개의 이미지를 찾아서 아래에 스크린에 맞는곳을 표시해주는 방법을 없을까요?
    a라는 파트에는 임의로 할때마다 바뀌는데 이미지는 총 4개가 있습니다. 그리고 a에 있는 이미지를 부분적으로 잘려진 표시가 b라는 파트에 총 8개의 이미지에서 해당하는 이미지는 4개가 있고 4개는 틀린 이미지입니다. 하지만 저는 맞는 이미지 4개를 찾아서 아래 소스에 붙여넣고 싶은데 하는방법이 무엇이 있을까요? ㅠㅠ
    while(True):
    screen = np.array(ImageGrab.grab(bbox=(x,y.w.h)))

    • @chobocoding
      @chobocoding  4 года назад +1

      제가 제대로 이해한 게 맞다면 a에는 하나의 이미지가 있고 그 이미지의 여러 부분(조각)이 b에 있는데 4개는 있는 이미지고 나머지 4개는 없는 이미지라는 것 같습니다. 그러면 b에 있는 총 8개의 이미지를 다 받아와서 각각의 이미지를 서치영역 내에서 찾아서 있는지 없는지 구분하면 될 것 같습니다.

  • @bbyabbbbyabb
    @bbyabbbbyabb 4 года назад +1

    Region에서 세번째 인자와 네번째 인자가 이미지를 찾을 영역 시작점과 끝점이라는거죠~? 찾을영역에 이미지가 계속 바뀔때도 이미지를 찾고 클릭이 될까요??

    • @chobocoding
      @chobocoding  4 года назад

      이미지 찾을영역을 필터링해야하는데 제가 실수로 빼먹었네요. 세번째는 타겟 이미지 영역의 너비, 네번째는 높이입니다. 찾을 영역을 필터링하려면 뽑은 좌표가 찾으려고 하는 영역 내에 있는지 if문을 구성하면 됩니다.
      ctr = pag.center(p)
      if ctr[0] >= f1[0] and ~~~~~:
      pag.moveTo(ctr)
      이런식으로요.

    • @bbyabbbbyabb
      @bbyabbbbyabb 4 года назад

      초보코딩 으 무슨말인지 모르겠습니다 헷갈리네요 ㅋㅋㅋㅋ 천천히 읽어보고 해보고 하겠습니다 감사합니다!!

    • @chobocoding
      @chobocoding  4 года назад

      네 일단 영상에 나오는 코드는 화면전체영역에서 이미지를 찾는 코드라고 이해하시면 됩니다.

    • @chobocoding
      @chobocoding  4 года назад

      빠진 부분을 보충해서 영상 만들었으니 확인해 보시면 될 것 같습니다. ㅎㅎ
      ruclips.net/video/cbpAQJ3_JlY/видео.html

  • @qryafhaf
    @qryafhaf 3 года назад +1

    Locateallonscreen은 전체화면인데 그거말고 지정해준영역안에서 찾는명령어는 뭔가요? 처음에 p로 좌표지정해준곳이요.. 구글링하는데 안나오네요ㅠㅠ

    • @chobocoding
      @chobocoding  3 года назад +1

      ruclips.net/video/7HbhB7NuPnk/видео.html
      링크된 영상을 참고바랍니다~

    • @qryafhaf
      @qryafhaf 3 года назад

      @@chobocoding 답변감사합니다. 영상봤는데 그런식으로 조건다는게 아닌, 선택한 좌표내에서만 이미지서치하는방법은 명령어가 따로없나요? 전체화면에서 서치하는데 0.3초?정도걸리는데 이 시간을 최대한 줄여보고싶어서요

    • @chobocoding
      @chobocoding  3 года назад

      따로없어서 저도 그런식으로 로직을 짠 것 같습니다~ 못 찾아서 그런걸 수도 있겠지만요.

    • @qryafhaf
      @qryafhaf 3 года назад

      @@chobocoding 넵 답변감사합니다!

  • @_house6662
    @_house6662 3 года назад +1

    혹시, 특정 영역 안의 이미지만 서치할 수 있는 방법이 있을까요??
    만약 영역 밖의 같은 이미지가 있더라고 서치 할 수 없게요.

    • @chobocoding
      @chobocoding  3 года назад

      이 영상의 다음 영상을 참고해보시기 바랍니다.

  • @연-p8u
    @연-p8u 2 года назад +1

    정적인 이미지 말고 실시간으로 바뀌는 화면을 분석 하고 싶은데 관련 자료가 있을까요?

    • @chobocoding
      @chobocoding  2 года назад

      반복문을 통해서 로직을 계속 돌리면 변화하는 화면에 대해 로직을 사용하게 되는 겁니다

  • @슈퍼맨-z4e
    @슈퍼맨-z4e 2 года назад +1

    import keyboard
    했을 때 네임에러 뜨는데 이건 왜그런건가요??

    • @chobocoding
      @chobocoding  2 года назад +1

      pip install keyboard
      를 실행해서 모듈 설치부터 해야 합니다

  • @falsemessiah5515
    @falsemessiah5515 3 года назад +1

    how to click without window being active? so i can click it at backgroud?

    • @chobocoding
      @chobocoding  3 года назад

      Its impossible to click when the target is not shown in screen with this logic. I think you mean the state(window not shown), right?

    • @falsemessiah5515
      @falsemessiah5515 3 года назад

      @@chobocoding yes not shown, not minimized. its behind other window.

    • @chobocoding
      @chobocoding  3 года назад

      Oh I see. If image is not shown, we cant find the image.

  • @만물상1번지
    @만물상1번지 3 года назад +1

    이미지의 크기가 달라져도 인식되게 하려면 어떻게 해야할까요

    • @chobocoding
      @chobocoding  3 года назад

      다른 글에 답변드렸습니다.

  • @옵저버-r9j
    @옵저버-r9j 3 года назад +1

    3d도 가능할까요? 🤔

    • @chobocoding
      @chobocoding  3 года назад

      3d라면 어떤 걸 말씀하시는걸까요?

    • @옵저버-r9j
      @옵저버-r9j 3 года назад

      3d 모델링된 사물을 다각도에서도 구분이 가능한지, 그리고 어떤 방법인지 궁금합니다.

    • @chobocoding
      @chobocoding  3 года назад

      이 로직을 억지로 끼워맞추면 가능은 하겠지만 이렇게 간편하게 하기는 어려울 것 같습니다~ 구체적으로 어떤 로직이 필요할지는 저도 안해봐서 잘 모르겠네요

  • @xnudge6338
    @xnudge6338 3 года назад +1


    p_list = pag.locateAllOnScreen("D:/find.png", confidence = 0.95) #날짜
    p_list = list(p_list)
    for p in p_list:
    print(pag.center(p))
    pag.moveTo(pag.center(p))
    pag.click(p)
    time.sleep(0.2)
    이거 사용해서 예약하는매크로 만들려고하는데요
    저 이미지를 찾지못하면 f5 1초마다 반복해서 누르게하고싶은데요 이럴땐 어떻게하죠?

    • @chobocoding
      @chobocoding  3 года назад

      전체를 while문으로 구성해서 반복되도록 해야할 것 같고, 이미지가 있는 경우와 없는 경우를 구분하기 위해 p_list의 길이(리스트 안의 요소 개수)를 확인해서 0이면 새로고침, 0이 아니면 클릭하도록 하면 될것 같네요

    • @xnudge6338
      @xnudge6338 3 года назад

      @@chobocoding 행님 제가 진짜 초보라서그런데 p_list 길이 0인지 1인지 확인하는 코드 어떻게하는지 알려주십쇼

    • @chobocoding
      @chobocoding  3 года назад

      len(p_list)
      가 p_list의 길이를 반환하는 코드입니다