GitHub 블로그
유튜브 영상     깃허브 프로필

1 분 소요

[공지사항] 지킬블로그 안내드립니다.

지킬 블로그에 대하여 알아보겠습니다.

버튼입니다

import numpy as np
import cv2

imageFile = './data/lena.jpg'
imgs = cv2.imread(imageFile)

# 트랙바 이벤트 발생 시 실행될 함수
def onChange(pos):
    global imgs
    # 'R' 트랙바의 위치 값을 읽음
    r = cv2.getTrackbarPos('R', 'img')
    
    # 원본 이미지를 복사
    img_copy = imgs.copy()
    
    # 빨간색 채널 값 변경
    img_copy[:, :, 2] = r
    
    # 변경된 이미지를 창에 표시
    cv2.imshow('img', img_copy)

# 초기 이미지를 창에 표시
cv2.imshow('img', imgs)

# 트랙바 생성
# 트랙바 이름 ('R'), 들어갈 창 이름 ('img'), 초기값 (0), 범위 (255), 이벤트 함수 (onChange)
cv2.createTrackbar('R', 'img', 0, 255, onChange)

# 트랙바 위치 초기화
cv2.setTrackbarPos('R', 'img', 0)

cv2.waitKey() # 사용자 입력 대기
cv2.destroyAllWindows()

gar

  1. 라이브러리 임포트:

    import numpy as np
    import cv2
    
    • numpy는 수치 연산을 수행하는 파이썬 패키지입니다.
    • cv2는 OpenCV(오픈 컴퓨터 비전) 라이브러리입니다. 이미지 처리 및 컴퓨터 비전 작업을 위한 다양한 함수와 도구를 제공합니다.
  2. 이미지 읽기:

    imageFile = './data/lena.jpg'
    imgs = cv2.imread(imageFile)
    
    • imageFile 변수에는 이미지 파일의 경로가 저장됩니다.
    • cv2.imread() 함수를 사용하여 이미지 파일을 읽어들입니다. 읽어들인 이미지는 imgs 변수에 저장됩니다.
  3. 트랙바 이벤트 핸들러 함수 정의:

    def onChange(pos):
        global imgs
        r = cv2.getTrackbarPos('R', 'img')
        img_copy = imgs.copy()
        img_copy[:, :, 2] = r
        cv2.imshow('img', img_copy)
    
    • onChange() 함수는 트랙바의 이벤트가 발생할 때마다 호출됩니다.
    • pos 매개변수는 트랙바의 위치를 전달받습니다.
    • cv2.getTrackbarPos() 함수를 사용하여 ‘R’ 트랙바의 위치를 읽어옵니다. 이 값은 빨간색 채널의 강도로 사용됩니다.
    • imgs.copy()를 사용하여 원본 이미지를 복사합니다. 그렇게 함으로써 원본 이미지를 변경하지 않고 새로운 이미지를 생성합니다.
    • 빨간색 채널의 값을 트랙바의 위치에 따라 변경하고, 변경된 이미지를 화면에 표시합니다.
  4. 초기 이미지 표시:

    cv2.imshow('img', imgs)
    
    • cv2.imshow() 함수를 사용하여 초기 이미지를 화면에 표시합니다. 초기 이미지는 imgs 변수에 저장된 이미지입니다.
  5. 트랙바 생성:

    cv2.createTrackbar('R', 'img', 0, 255, onChange)
    
    • cv2.createTrackbar() 함수를 사용하여 ‘R’이라는 이름의 트랙바를 생성합니다.
    • 생성된 트랙바는 ‘img’ 창에 표시되며, 초기 위치는 0입니다. 트랙바의 최대 위치는 255로 설정되어 있습니다.
    • 트랙바의 위치가 변경될 때마다 onChange 함수가 호출됩니다.
  6. 트랙바 위치 초기화:

    cv2.setTrackbarPos('R', 'img', 0)
    
    • 트랙바의 초기 위치를 0으로 설정합니다. 즉, 초기에는 빨간색 채널의 강도가 0으로 설정됩니다.
  7. 키 입력 대기 및 창 닫기:

    cv2.waitKey()
    cv2.destroyAllWindows()
    
    • cv2.waitKey() 함수를 사용하여 사용자의 키 입력을 대기합니다. 사용자가 키를 누를 때까지 대기합니다.
    • cv2.destroyAllWindows() 함수를 호출하여 모든 창을 닫습니다. 사용자가 어떤 키를 누르더라도 모든 창이 닫힙니다.

댓글남기기