NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Python 인공지능을 이용한 파이썬 이미지 서치 매크로 제작하기. (with ChatGPT)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 업무 자동화를 하려면 엔지엠 매크로를 이용하는게 가장 좋은 방법이지만~ 주머니 사정이 여의치 않은 분들은 직접 매크로 프로그램을 제작해서 사용하는것도 좋은 방법입니다. 하지만, 개발자가 아닌 일반인이 매크로 프로그램을 어떻게 만들 수 있을까요? 예전에는 적당한 비용을 지불하고 프로그램 제작 의뢰를 하거나 개발자를 채용해서 내부 자동화 프로그램을 만들었습니다. 요즘은 인공지능의 발달로 개발자가 없어도 누구나 쉽고 빠르게 매크로 프로그램을 제작할 수 있게 되었습니다. ChatGPT를 이용하는 방법인데요. 엔지엠소프트웨어 홈페이지에서 여러번 소개가 되어 있으니 여러분들도 한번 따라 해보세요^^

    [ 인공지능을 이용한 마우스 클릭 매크로 프로그램 제작하기 ]

     

    키보드 입력 매크로 프로그램을 제작하고 싶다면 아래 글이 도움이 될겁니다.

    [ 인공지능을 이용한 키보드 텍스트 입력 매크로 프로그램 제작하기 ]

     

    오늘은 인공지능인 ChatGPT를 이용해서 이미지를 찾는 방법에 대해 알아보겠습니다. 일반적으로 이미지 서치라고 부르는데요. 위의 마우스와 키보드 입력 방법을 학습하여 같이 조합해서 매크로 프로그램을 제작하면 시중에 유통되고 있는 왠만한 매크로 프로그램과 견줄만한 성능과 기능을 갖추게 될겁니다. 디테일한 부분은 구글 검색으로 약간씩 손보면 되거든요^^; 우선, 챗GPT에 접속한 후 아래와 같이 질문을 해봤습니다.

    5BoYkpj.png

     

     

    뭔가 느낌이 쌔~ 하군요-_-; 제가 원하는 답이 아니긴 하지만, 이런 경우도 있다는걸 알기 위해 ChatGPT가 알려준 내용을 적어 보겠습니다.

     

    안녕하세요! 파이썬 이미지 서치 매크로를 만드는 방법에 대해 안내해드리겠습니다.

    먼저, 필요한 패키지를 설치해야 합니다. 이번 예제에서는 Selenium과 Pillow 패키지를 사용할 것이므로 다음과 같이 설치해줍니다:

    pip install selenium Pillow

     

    이제 코드 작성에 들어갑니다. 우선, Selenium을 사용하여 웹 브라우저를 자동화합니다. 이를 위해 웹 드라이버를 다운로드해야 합니다. 이번 예제에서는 크롬 웹 드라이버를 사용하겠습니다.

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    

     

    다음으로, Google 이미지 검색 페이지에 접속합니다. 이를 위해 get() 메소드를 사용합니다.

    driver.get("https://www.google.com/imghp")
    

     

    이제 검색어를 입력하고 검색 버튼을 누르는 작업을 해야합니다. 이를 위해 find_element_by_name() 메소드를 사용합니다.

    search_bar = driver.find_element_by_name("q")
    search_bar.send_keys("검색어")
    search_bar.send_keys(Keys.RETURN)
    

     

    검색 결과가 나타난 페이지에서 이미지를 선택하고, Pillow 패키지를 사용하여 이미지를 다운로드합니다.

    import urllib.request
    from PIL import Image
    
    image_url = "이미지 주소"
    urllib.request.urlretrieve(image_url, "이미지 파일명")
    

     

    이것으로 이미지 서치 매크로를 만드는 방법을 알아보았습니다. 필요에 따라 코드를 수정하여 자신에게 맞는 매크로를 만들 수 있습니다.

     

    우리가 원하는 결과는 아니지만~ 개발자 입장에서 보면 이 내용도 어딘가에 써먹을 수 있는 코드입니다. 하지만, 원래 하려던건 아니라서 다시 질문을 해보겠습니다.

    • 질문 내용: "이거 말고 윈도우 화면에서 이미지를 찾는 방법 알려줘"

    mK9be9h.png

     

     

    이번에는 제대로 알려준거 같습니다. 답변 내용을 같이 볼까요?

     

    윈도우 화면에서 이미지를 찾는 방법에는 여러 가지 방법이 있습니다. 그 중에서도 파이썬을 사용하여 이미지를 찾는 방법을 소개해드리겠습니다.

    먼저, 필요한 패키지를 설치해야 합니다. 이번 예제에서는 Pillow 패키지를 사용할 것이므로 다음과 같이 설치해줍니다:

    pip install Pillow
    

     

    이제 코드 작성에 들어갑니다. Pillow 패키지를 사용하여 스크린샷을 찍은 후, 이미지를 검색할 부분을 선택합니다. 이를 위해 ImageGrab 클래스와 Image 클래스를 사용합니다.

    import os
    from PIL import Image, ImageGrab
    
    # 스크린샷을 찍는 함수
    def take_screenshot():
        screen = ImageGrab.grab()
        return screen
    
    # 이미지를 검색하는 함수
    def search_image(image_path):
        # 이미지를 불러옵니다.
        image = Image.open(image_path)
        screen = take_screenshot()
    
        # 이미지를 검색합니다.
        location = screen.find(image)
    
        # 이미지를 찾은 경우, 위치 정보를 반환합니다.
        if location:
            return location
        else:
            return None
    

     

    위 코드에서 take_screenshot() 함수는 스크린샷을 찍어주는 함수이며, search_image() 함수는 이미지를 검색하는 함수입니다. search_image() 함수는 이미지 파일 경로를 매개변수로 받아 해당 이미지를 스크린샷에서 검색한 후, 이미지가 검색된 위치 정보를 반환합니다.

    이제 이를 활용하여 원하는 이미지를 검색해볼 수 있습니다. 다음은 예제 코드입니다:

    # 이미지 파일 경로
    image_path = '이미지 파일 경로'
    
    # 이미지를 검색합니다.
    location = search_image(image_path)
    
    # 이미지를 찾은 경우, 위치 정보를 출력합니다.
    if location:
        print(f'이미지를 찾았습니다! 위치 정보: {location}')
    else:
        print('이미지를 찾지 못했습니다.')
    

     

    이를 실행하면, 해당 이미지가 검색된 위치 정보가 출력됩니다. 필요에 따라 코드를 수정하여 자신에게 맞는 이미지 검색 기능을 만들 수 있습니다.

     

    바탕화면에 내문서를 찾아볼까요? 캡쳐 프로그램을 사용해서 바탕화면의 내문서 아이콘을 캡쳐한 후 저장하세요. 저는 아래 이미지를 사용하도록 하겠습니다.

    yFs0m9Y.png

     

     

    이미지 서치 매크로 프로그램의 전체 코드는 아래와 같습니다.

    import os
    from PIL import Image, ImageGrab
    
    # 스크린샷을 찍는 함수
    def take_screenshot():
        screen = ImageGrab.grab()
        return screen
    
    # 이미지를 검색하는 함수
    def search_image(image_path):
        # 이미지를 불러옵니다.
        image = Image.open(image_path)
        screen = take_screenshot()
    
        # 이미지를 검색합니다.
        location = screen.find(image)
    
        # 이미지를 찾은 경우, 위치 정보를 반환합니다.
        if location:
            return location
        else:
            return None
        
    # 이미지 파일 경로
    image_path = '이미지 파일 경로'
    
    # 이미지를 검색합니다.
    location = search_image(image_path)
    
    # 이미지를 찾은 경우, 위치 정보를 출력합니다.
    if location:
        print(f'이미지를 찾았습니다! 위치 정보: {location}')
    else:
        print('이미지를 찾지 못했습니다.')

     

    이미지 파일 경로에 방금 캡쳐한 아이콘의 경로를 입력하세요. 그리고, 실행 해보세요. 정상 동작하지 않을겁니다. 어떤 이유인지는 모르겠지만, 챗GPT가 알려준 코드에 약간의 버그가 존재합니다. ImageGrab으로 Image 객체를 만들었는데요. 윈도우 화면에서 하위 이미지를 찾는 Find 함수가 Image 객체에는 존재하지 않기 때문입니다. 그러면, 왜 이런 결과가 나왔고, 문제를 어떻게 해결해야 할지 고민해봐야 합니다. ImageGrab 공식 사이트에 가서 Documentation을 읽어봅니다. 참고로, 해당 함수는 지원하지 않기 때문에 가이드된 내용은 발견할 수 없을겁니다. 코드를 아래와같이 변경해볼까요?

    import pyautogui
    import time
    
    p_list = pyautogui.locateAllOnScreen("C:\\Users\\ngmas\\Desktop\\test.png")
    p_list = list(p_list)
    print(p_list)

     

    코드가 많이 간소화되었습니다. 이 코드를 실행하면 하단의 콘솔에 찾은 이미지의 위치를 알려줍니다.

    NNmD1dn.png

     

     

    엔지엠 에디터에서도 이미지 매치를 해보면 동일한 결과를 확인할 수 있습니다.

    2l9kfqQ.png

     

     

    이제 찾은 이미지를 클릭하는 코드를 작성합니다. 좀 더 재미있는 예제를 위해 구글에서 고양이 이미지를 찾아서 바탕화면에 저장했습니다. 파일명은 source.png로 저장했어요.

    import pyautogui
    import time
    
    p_list = pyautogui.locateAllOnScreen("C:\\Users\\<사용자>\\Desktop\\source.png")
    p_list = list(p_list)
    p_center = pyautogui.center(p_list[0])
    pyautogui.click(p_center)

     

    Ctrl+F5를 눌러서 실행 해보세요.

    OZ0vw79.gif

     

     

    여러분들도 잘 동작하죠? 위와 같은 방식으로 이미지를 찾아서 클릭하는걸 반복하면 원하는 자동화를 공짜로 쉽게 얻을 수 있게될겁니다. 생각보다 그렇게 어렵지는 않거든요~ 매크로를 만드는게 어려운건 아닙니다. 처음부터 끝까지 많은 로직들의 이미지와 좌표를 확인하고 클릭하거나 키보드가 동작할 수 있도록 코딩하는게 상당한 노가다성 작업입니다. 기본적인 몇가지만 외워서 활용한다면 비싼돈주고 제작을 의뢰하지 않아도 됩니다. 복잡하지 않은 업무 자동화 매크로를 제작하는건 마우스 클릭과 키보드 텍스트 입력 그리고, 이미지 서치가 기능의 전부이기 때문입니다. 다음에는 좀 더 의미있는 매크로 프로그램을 만들어 볼건데요. 이것저것 기능을 좀 추가해 보도록 하겠습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.