1. 트랙바
: Canny 함수를 써보자
-> Canny 함수는 에지 검출 함수임, threshold 두개를 입력으로 받는다.
: 트랙바의 수치를 가져와서 사용하고 싶으면 getTrackbarPos를 사용하면 된다.
cv.namedWindow("test")
cv.createTrackbar('low threshold', 'test', 0, 1000, on_trackbar)
cv.createTrackbar('high threshold', 'test', 0, 1000, on_trackbar)
# 초기 값
cv.setTrackbarPos('low threshold', 'test', 50)
cv.setTrackbarPos('high threshold', 'test', 150)
cv.imshow("aaa", img)
while True:
low = cv.getTrackbarPos('low threshold', 'test')
high = cv.getTrackbarPos('high threshold', 'test')
img_test = cv.Canny(img, low, high)
cv.imshow("test", img_test)
if cv.waitKey(1) & 0xFF == 27:
break
2. waitKey 함수
: 입력을 기다리는 함수, 이거 사용해서 동영상 속도도 늦출 수 있다.
: 0이면 무한 대기, 숫자면 숫자ms 만큼 대기
3. 마우스 이벤트
: 마우스를 땔때, 클릭할때, 드래그 할때 모두 신경써줘야한다. 생각보다 세세한 설정, 지시가 필요
import cv2 as cv
import numpy as np
import random
mouse_pressing = False
drawing_mode = True
start_x, start_y = -1, -1
color = (255, 255, 255)
img = np.zeros((512, 512, 3), np.uint8)
def mouse_callback(event, x, y, flags, param):
global start_x, start_y, drawing_mode, mouse_pressing, color
# 마우스 클릭 상태에서 움직이고 있다면
if event == cv.EVENT_MOUSEMOVE:
if mouse_pressing == True:
if drawing_mode == True:
cv.rectangle(img, (start_x, start_y), (x, y), color, -1)
else:
cv.circle(img, (start_x, start_y), max(
abs(start_x-x), abs(start_y-y)), color, -1)
elif event == cv.EVENT_LBUTTONDOWN:
color = (random.randrange((256)), random.randrange(
(256)), random.randrange((256)))
mouse_pressing = True
# 클릭 했으니 시작 지점으로 정해주기
start_x, start_y = x, y
# 마우스 클릭 때면 그림 확정
elif event == cv.EVENT_LBUTTONUP:
mouse_pressing = False
if drawing_mode == True:
cv.rectangle(img, (start_x, start_y), (x, y), color, -1)
else:
cv.circle(img, (start_x, start_y), max(
abs(start_x-x), abs(start_y-y)), color, -1)
elif event == cv.EVENT_RBUTTONDOWN:
drawing_mode = 1 - drawing_mode
cv.namedWindow('asd')
cv.setMouseCallback('asd', mouse_callback)
while(1):
cv.imshow('asd', img)
# 프로그램 종료
key = cv.waitKey(1)
if key == 27:
break
'OpenCV > Python' 카테고리의 다른 글
물체 감싸기 (0) | 2021.06.11 |
---|---|
그리기에 관한 것!!!! (0) | 2021.06.11 |
넘파이 (0) | 2021.06.09 |
Mat 객체 활용 (0) | 2021.06.09 |
파이썬 기초 문법 -2 (0) | 2021.06.01 |