엣지(edge) 검출
- 물체의 윤곽선(경계선)이 해당
- 영상에서 화소의 밝기가 급격하게 변하는 부분
- 에지를 검출할 수 있으면 물체의 윤곽선을 알 수 있음
- "케니 에지 검출"은 상당한 수준으로 에지를 신뢰성 있게 검출하는 방법
cv2.Canny(영상, 최소임계값, 최대임계값, 커널)
최소임계값, 최대임계갑:두개의 경계값(max, min)을 지정해서 경계에 있는 영역 픽셀을 찾음.
import cv2
import numpy as np
img = cv2.imread('./dog.jpg')
med_val = np.median(img)
lower = int(max(0, 0.7*med_val)) #95 #중앙값의 70%
upper = int(min(255, 1.3 * med_val)) #176 #중앙값의 130%
print(lower, upper)
dst = cv2.Canny(img, lower, upper, 3)
cv2.imshow('img', img)
cv2.imshow('dst',dst)
cv2.waitKey()
필터캠(카메라)
스페이스바(27)을 누르면 필터가 변경될 수 있도록 하는 코드
import cv2
import numpy as np
def blur_filter(img):
img = cv2.GaussianBlur(img, (0, 0), 3)
return img
def canny_filter(img):
med_val = np.median(img)
lower = int(max(0, 0.7 * med_val)) # 중앙값의 70%
upper = int(min(255, 1.3 * med_val)) # 중앙값의 130%
dst = cv2.Canny(img, lower,upper, 3)
return dst
#객체만들기
cap = cv2.VideoCapture(0)
#일반영상(0번 지정)
cam_mode = 0
#영상으로 만들기(무한로프 돌리기)
while True:
ret, frame = cap.read()
if cam_mode == 1:
frame = blur_filter(frame)
elif cam_mode == 2:
frame = canny_filter(frame)
cv2.imshow('frame', frame)
key = cv2.waitKey(10) #10/1000
if key == 27: #27=esc
break
elif key == ord(' '): #' ' space-bar
cam_mode += 1
if cam_mode == 3:
cam_mode = 0
cap.release()
'AI 컴퓨터 비전프로젝트' 카테고리의 다른 글
[DL] 모폴로지 처리, 도형이미지 구분하기 (1) | 2024.10.08 |
---|---|
[DL] 투시변환(persective), 명함을 이용한 사진 활용 (5) | 2024.10.06 |
[DL] 영상의 변환(이동), resize (0) | 2024.10.05 |
[DL] 적응형이진화(cv2.adaptiveThreshold())+자동이진화 적응형, 가우시안 비교 (0) | 2024.10.04 |
[DL] 오츠의 이진화(스레숄드값을 자동으로 잡아주기) (0) | 2024.10.03 |