Sun.El Data Analysis

[openCV] Window management, Keyboard Event, Trackbar, Mouse event 본문

Deep Learning

[openCV] Window management, Keyboard Event, Trackbar, Mouse event

Sun.El 2023. 8. 21. 23:54
728x90

1. Window management

#cv2.namedWindow, cv2.moveWindow, cv2.resizeWindow
import cv2
file_path = './book/img/girl.jpg'
img = cv2.imread(file_path)
img_gray = cv2.imread(file_path, cv2.IMREAD_GRAYSCALE)

cv2.namedWindow('origin', cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE 사이즈 변경 불가
cv2.namedWindow('gray', cv2.WINDOW_NORMAL) # cv2.WINDOW_NORMAL, 사이즈 변경 가능

cv2.imshow('origin',img)
cv2.imshow('gray', img_gray)

cv2.moveWindow('origin', 0, 0)
cv2.moveWindow('gray', 100, 100)

cv2.waitKey(0) #무한 대기
cv2.resizeWindow('origin', 200, 200) #창 크기 변경 불가
cv2.resizeWindow('gray', 100, 100) #창 크기 변경 가능

cv2.waitKey(0) #무한 대기
cv2.destroyWindow('gray')
cv2.waitKey(0)
cv2.destroyAllWindows()

 

2. Keyboard Event

import cv2

img_file = './book/img/girl.jpg'
img = cv2.imread(img_file)
title ='IMG' #창 이름
x, y = 100, 100 #최초좌표

while True:
    cv2.imshow(title, img)
    cv2.moveWindow(title, x, y)
    key = cv2.waitKey(0) & 0xFF # 키보드 입력을 무한 대기, 8비트 마스크 처리
    print(key, chr(key)) # 키보드 입력값, 문자값 출력
    
    if key == ord('h'): # h : 좌
        x -= 10
    elif key == ord('j'): # j : 아래
        y += 10
    elif key == ord('k'): # k : 위
        y -= 10
    elif key == ord('l'): # l : 오른쪽
        x += 10
    elif key == ord('q') or key == 27: # q or esc : esc
        #break
        cv2.destroyAllWindows()
        break
        
    cv2.moveWindow(title, x, y)

 

3. Trackbar

import cv2, numpy as np

win_name = 'Trackbar'
img = cv2.imread('./book/img/blank_500.jpg')
cv2.imshow(win_name, img)

def onChange(x):
    r = cv2.getTrackbarPos('R',win_name)
    g = cv2.getTrackbarPos('G',win_name)
    b = cv2.getTrackbarPos('B',win_name)
    print(x, r, g, b)
    img[:] = [b, g, r]
    cv2.imshow(win_name, img)
    
cv2.createTrackbar('R', win_name, 0, 255, onChange)
cv2.createTrackbar('G', win_name, 0, 255, onChange)
cv2.createTrackbar('B', win_name, 0, 255, onChange)

while True:
    if cv2.waitKey(1) & 0xFF == 27:
        break
cv2.destroyAllWindows()

 

4. Mouse event

import cv2
title = 'mouse event'
img = cv2.imread('./book/img/blank_500.jpg')
cv2.imshow(title, img)
def onMouse(event, x, y, flags, param): #마우스 콜백 함수 구현
    print(event, x, y, ) #파라미터 출력
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img, (x,y), 30, (0,0,0), -1)
        cv2.imshow(title, img)
cv2.setMouseCallback(title, onMouse)

while True:
    if cv2.waitKey(0) & 0xFF == 27:     # esc로 종료
        break
cv2.destroyAllWindows()
import cv2
title = 'mouse event'
img = cv2.imread('./book/img/blank_500.jpg')
cv2.imshow(title, img)
colors = {'black':(0,0,0),'red': (0,0,255),'blue':(255,0,0), 'green': (0,255,0) }
def onMouse(event, x, y, flags, param):
    print(event, x, y, flags)
    color = colors['black']
    if event == cv2.EVENT_LBUTTONDOWN:
        if flags & cv2.EVENT_FLAG_CTRLKEY and flags & cv2.EVENT_FLAG_SHIFTKEY : #ctrl+shift
            color = colors['green']
        elif flags & cv2.EVENT_FLAG_SHIFTKEY : #shift
            color = colors['blue']
        elif flags & cv2.EVENT_FLAG_CTRLKEY : #ctrl
            color = colors['red']
        cv2.circle(img, (x,y), 30, color, -1)
        cv2.imshow(title, img)
cv2.setMouseCallback(title, onMouse)
while True:
    if cv2.waitKey(0) & 0xFF == 27:
        break
cv2.destroyAllWindows()

'Deep Learning' 카테고리의 다른 글

[openCV] 컬러 스페이스  (0) 2023.08.22
[openCV] ROI(Region Of Interest)  (0) 2023.08.22
[OpenCV] 도형 그리기  (0) 2023.08.21
[OpenCV] 이미지/동영상 읽기 및 저장  (0) 2023.08.21
[딥러닝] 퍼셉트론 및 게이트 개념  (0) 2023.08.11