일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- track bar
- event-mouse
- 파이썬 기초
- 영상에 도형
- 공대아저씨
- docker
- AI
- equalize
- 딥러닝
- weighted sum
- binarization
- 인공지능
- abs diff
- 파이썬 컴퓨터비전
- 파이썬 시각화
- 영상클립 캡처
- Docker Container
- 컴퓨터 비전
- 그레이 스케일
- matplotlib
- 논문리뷰
- 모션감지 카메라
- 이미지 시각화
- 도커
- 시각화 기초
- 영상 이진화
- Computer-vision
- 이미지 히스토그램
- 도커 컨테이너
- 픽셀연산
- Today
- Total
공부하는 아저씨의 IT 공방
파이썬 시각화 공부 5일(event-mouse, keyboard, track bar) 본문
안녕하세요 공대아저씨 입니다 ㅎ
제 블로그에 누적 방문자수가 25명이네요 ㅎ
아직 큰 수치는 아니지만 그래도 열심히 하다보면 분명 제 글을 읽어주시는 분들도 많이 생겨나겠죠?ㅎ
그런 희망을 갖고 오늘도 코딩을 해봅니다 :)
오늘은 지난시간에 공지한 바와 같이
event-mouse, keyboard, track bar에 대해서 한번 알아보겠습니다.
실습이미지 다운로드
Keyboard 입력 만들기
가장 먼제 keyboard 입력에 따른 이미지 처리에 대해서 실습해 보겠습니다.
우린 지난 시간에 bgr과 rgb에 대한 내용들을 공부했었습니다.
그러면 키보드 버튼 r을 누를 때 bgr이 rgb로 변경되는 코드를 작성해보겠습니다.
## keyboard 입력에 따라 이미지 처리하기
import cv2
img =cv2.imread('./img/cats_0.jpg')
#cv2.imshow('img1', img+50)
#cv2.imshow('img2', img+50) # 이미지는 결국 매트릭스이고 거기에 50을 더하면 밝기가 밝아짐
cv2.imshow('img', img)
while True :
key =cv2.waitKey()
if key == ord('r'): #r 버튼을 누르면 bgr을 rgb로 변경
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow('img', img+30)
elif key == ord('i'):
img = ~img # ~은 논리연산자 not
cv2.imshow('img', img)
elif key == ord('p'):
img = img+15 # 계속 밝아지게끔
cv2.imshow('img', img)
elif key ==27:
break
cv2.destroyAllWindows()
Event-mouse 만들기
자 이번에는 2번째로 event-mouse에 대해서 한번 알아보겠습니다.
event-mouse는 마우스를 이용해서 빈 공간에 그림을 그리고나 표시를 하는 것을 의미하는데
코드는 다음과 같습니다.
## LbuttonDown drawing lines
import cv2
import numpy as np
import sys
oldx = oldy = -1
def mouse_fn(event, x, y, flags, param):
global oldx, oldy
if event == cv2.EVENT_LBUTTONDOWN:
oldx, oldy = x, y
print('Event_LBUTTON_DOWN', (x, y))
elif event == cv2.EVENT_LBUTTONUP:
print('Event_LBUTTON_UP', (x, y))
elif event == cv2.EVENT_MOUSEMOVE:
if flags & cv2.EVENT_FLAG_LBUTTON:
cv2.line(img, (oldx, oldy), (x, y), (0,0,250), 4, cv2.LINE_AA)
cv2.imshow('img', img)
oldx, oldy = x, y;
img = np.ones((240, 320, 3), dtype = np.uint8)*255
cv2.namedWindow('img')
cv2.setMouseCallback('img', mouse_fn, img)
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
마우스 이벤트를 하기 위해서는 먼저, 마우스 이벤트를 처리하는 함수가 필요합니다.
Event_LBUTTON_DOWN은 마우스 버튼을 누를때의 현재 마우스 좌표를 저장하고,
Event_LBUTTON_UP은 마우스 버튼을 놓을때 작동하게 되며 현재 마우스 좌표를 출력합니다.
EVENT_MOUSEMOVE는 마우스가 이동할때 호출되는데, 이때는 마우스 버튼이 눌린 상태에서만 실행이 됩니다.
자 그래서 프로그램을 실행하면 다음과 같은 화면으로 나오게 됩니다.
자, 마지막으로 트랙바를 이용한 gray-scale 조절을 해보겠습니다.
지난번 gray-scale을 조절하는 것이 시각화에서는 어떤 경계를 찾거나, 이미지를 처리하는 속도를 올리는데 사용 할 수 있다고 설명드렸습니다. 오늘은 그걸 조절바에 의해서 한번 바꿀 수 있도록 코드륵 작성해보겠습니다.
Trackbar 만들기
## Trackbar
import cv2
import numpy as np
def nothing(x):
pass
frame = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('frame')
cv2.createTrackbar('Red', 'frame', 0, 255, nothing)
while True:
cv2.imshow('frame', frame)
key = cv2.waitKey(10)
if key == 27:
break
r = cv2.getTrackbarPos('Red', 'frame')
frame[:] = [0, 0, r]
cv2.destroyAllWindows()
이 코드를 사용하게 되면 기본적으로 0부터 255까지의 수를 조절할 수있는데,
[0, 0, r]에 대한 값을 조절 하는 것이기 때문에 bgr 즉, r계열의 색상값을 조절 할 수 있습니다.
Trackbar 3개 만들기
이번에는 모든 b g r 값에 대한 trackbar를 만들어 보았습니다.
## Trackbar 3개 만들기
import cv2
import numpy as np
def nothing(x):
pass
frame = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('frame')
cv2.createTrackbar('Red', 'frame', 0, 255, nothing)
cv2.createTrackbar('Green', 'frame', 0, 255, nothing)
cv2.createTrackbar('Blue', 'frame', 0, 255, nothing)
while True:
cv2.imshow('frame', frame)
key = cv2.waitKey(10)
if key == 27:
break
r = cv2.getTrackbarPos('Red', 'frame')
g = cv2.getTrackbarPos('Green', 'frame')
b = cv2.getTrackbarPos('Blue', 'frame')
frame[:] = [b, g, r]
cv2.destroyAllWindows()
색상을 조절하면, 이미지의 밝기도 조절하면 이미지를 갖고 할 수 있는 것이 더 많아 지겠죠?
밝기 조절도 해보았습니다.
+@ 밝기조절 추가
밝기 조절 트랙바를 만드는 것도 같은 원리 입니다.
## Trackbar 이미지 밝기조절 추가
## Trackbar 3개 만들기
import cv2
import numpy as np
def nothing(x):
pass
frame = cv2.imread('./img/fruits.jpg')
cv2.namedWindow('frame')
cv2.createTrackbar('brightness', 'frame', 0, 255, nothing)
while True:
cv2.imshow('frame', frame+r)
key = cv2.waitKey(10)
if key == 27:
break
r = cv2.getTrackbarPos('brightness', 'frame')
cv2.destroyAllWindows()
자 지금까지 event-mouse, keyboard, track bar에 대해서 알아보았습니다.
다음시간부터는 지금까지 배운 것들을 실제 이미지에 적용해보는 실습을 진행해 보도록 하겠습니다.
오늘도 긴글 읽어주셔서 감사합니다. :)
'파이썬 기초(1일 1코드)' 카테고리의 다른 글
파이썬 시각화 공부 6일(이미지 조작하기, 각종 연산) (0) | 2023.09.11 |
---|---|
[Docker container] 도커 컨테이너의 개념과 구조, 가상환경 구축하기, 사용해야 하는 이유 4가지 (0) | 2023.09.10 |
파이썬 시각화 공부 4일(영상 클립 캡쳐, 영상에 도형 집어 넣기) (2) | 2023.09.07 |
파이썬 시각화 공부 3일(라인, 직사각형, 원 그리기, 오징어 게임 로고 만들기) (0) | 2023.09.06 |
파이썬 시각화 공부 2일(픽셀연산) (2) | 2023.09.05 |