분류 전체보기 428

[18] 7) 특정 색상 영역 추출

RGB 색 공간에서 녹색 영역 추출하기 HSV 색 공간에서 녹색 영역 추출하기 RGB 색 공간에서 녹색 영역 추출하기 import cv2 import sys import numpy as np src = cv2.imread('candies2.png') #src = cv2.imread('candies2.png') if src is None: print('Image load failed!') sys.exit() src_hsv=cv2.cvtColor(src,cv2.COLOR_BGR2HSV) dst1=cv2.inRange(src,(0,128,0),(100,255,100)) dst2=cv2.inRange(src_hsv,(50,150,0),(80,255,255)) # 50

[17] 6) 히스토그램 평활화

히스토그램 평활화 (Histogram equalization) 히스토그램이 그레이스케일 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법 히스토그램 균등화, 균일화, 평탄화 히스토그램 평활화를 위한 변환 함수 구하기 히스토그램 평활화 계산 방법 히스토그램 평활화와 히스토그램 누적 분포 함수와의 관계 cv2.equalizeHist(src,dst=None) -> dst • src: 입력 영상 . 그레이스케일 영상 • dst: 결과 영상 히스토그램 평활화 예제 import sys import numpy as np import cv2 src=cv2.imread('Hawkes.jpg',cv2.IMREAD_GRAYSCALE) if src is None: print('Image load failed!..

[16] 5) 영상의 명암비 조절

명암비(contrast)란? 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이 컨트라스트, 대비 기본적인 명암비 조절 함수 효과적인 명암비 조절 함수 기본적인 명암비 조절 예제 import sys import cv2 import numpy as np src=cv2.imread('lenna.bmp',cv2.IMREAD_GRAYSCALE) if src is None: print('image load failed!') sys.exit() alpha=0.5 dst=np.clip((1+alpha)*src - 128*alpha,0,255).astype(np.uint8) #이 수식의 결과의 범위를 지정 #실수형으로 나오므로 int형으로 변환 필요 cv2.imshow('src',src) cv2.imshow('ds..

[15] 4) 히스토그램 분석

히스토그램 (Histogram) 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것 예를 들어 그레이스케일 영상에서 각 그레이스케일 값에 해당하는 픽셀의 개수를 구하고, 이를 막대 그래프의 형태로 표현 정규화된 히스토그램 (Normalized histogram) 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어준 것 해당 그레이스케일 값을 갖는 픽셀이 나타날 확률 영상과 히스토그램의 관계 히스토그램 구하기 cv2.calHist(images,channels,mask,histSize,ranges,hist=None,accumulatE=None) -> hist • images: 입력 영상 리스트 • channels: 히스토그램을 구할 채널을 나타내는 리스트 • mask: 마스크 영상 입력 영상 전체에서 히스토그램을..

[14] 3) 컬러 영상과 색 공간

OpenCV와 컬러 영상 컬러 영상은 3차원 numpy.ndarry로 표현. img.shape=(h,w,3) openCV 에서는 RGB 순서가 아니라 BGR 순서를 기본으로 사용 OpenCV 에서 컬러 영상 다루기 img1=cv2.imread('lenna.bmp',cv2.IMREAD_COLOR) img2=np.zeros((480,640,3),np.uint8) img3=cv2.imread('lenna.bmp',cv2.IMREAD_GRAYSCALE) img4=cv2.cvtColor(img3,COLOR_GRAY2BGR) # 이 경우 img4영상의 각 픽셀은 B,G,R 색 성분 값이 모두 같게 설정됨 (색상) 채널 분리 cv2.split(m,mv=None) -> dst • m: 다채널 영상 (ex) (B, G,..

[13] 2) 영상의 산술 및 논리 연산

덧셈 연산 두 영상의 같은 위치에 존재하는 픽셀 값을 더하여 결과 영상의 픽셀 값으로 설정 덧셈 결과가 255보다 크면 픽셀 값을 255로 설정(포화 연산) cv2.add(src1,src2,dst=None,mask=None,dtype=None) -> dst • src1: ( 입력 ) 첫 번째 영상 또는 스칼라 • src2: ( 입력 ) 두 번째 영상 또는 스칼라 • dst ( 출력 ) 덧셈 연산의 결과 영상 • mask: 마스크 영상 • dtype 출력 영상 dst 의 타입 . (e.g.) cv2.CV_8U, cv2.CV_32F 가중치 합(weighted sum) 두 영상의 같은 위치에 존재하는 픽셀 값에 대하여 가중합을 계산하여 결과 영상의 픽셀 값으로 설정 보통 𝛼 + 𝛽 = 1 이 되도록 설정 ➔ ..

[12] 기본적인 영상 처리 기법 1)영상의 밝기 조절

화소 처리(Point processing) 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산 결과 영상의 픽셀 값이 정해진 범위에 있어야함 반전, 밝기, 조절, 명암비 조절등 밝기 조절이란? 영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산 밝기 조절 수식 영상의 밝기 조절을 위한 영상의 덧셈 연산 cv2.add(src1,src2,dst=None,mask=None,dtype=None) -> dst • src1: ( 입력 ) 첫 번째 영상 또는 스칼라 • src2: ( 입력 ) 두 번째 영상 또는 스칼라 • dst: ( 출력 ) 덧셈 연산의 결과 영상 • mask: 마스크 영상 • dtype: 출력영상(dst) 의 타입. ex)cv2.CV_8U, cv2.CV_32..

[11] 동영상 전환 이펙트

동영상 전환 이펙트 두 동영상 클립 사이에 추가되는 애니메이션 효과 페이드-인, 페이드-아웃, 디졸브, 밀기, 확대 등 구현 할 기능 두개의 동영상 동시 열기 첫번째 동여상의 마지막 N개의 프레임과 두 번째 동영상의 처음 N개 프레임을 합성 합성된 영상을 동영상으로 저장하기 import sys import cv2 import numpy as np cap1=cv2.VideoCapture('video1.mp4') cap2=cv2.VideoCapture('video2.mp4') if not cap1.isOpened() or not cap2.isOpened(): print('video open failed!') sys.exit() # 두 동영상의 크기, fps는 같다고 가정함 frame_cnt1=round(ca..

[10] 키보드, 마우스, 트랙바 이벤트 처리하기

키보드 입력 대기 함수 cv2.waitKey(delay=None) -> retval 키보드에서 'i' 또는 'I' 키를 누르면 영상을 반전 import sys import numpy as np import cv2 img=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE) cv2.namedWindow('image') cv2.imshow('image',img) while True: key=cv2.waitKey() if key==27: break elif key==ord('i'): img=~img cv2.imshow('image',img) cv2.destroyAllWindows() 마우스 이벤트 콜백함수 등록 함수 cv2.setMouseCallback(windowName,onMouse..

[09] 5) 카메라와 동영상 처리하기

cv2.VideoCapture 클래스 OpenCV 에서는 카메라와 동영상으로부터 프레임 ( 을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리함 카메라 열기 cv2.Videocapture(index,apiPreference=None) -> retval • index: camera_id + domain_offset_id 시스템 기본 카메라를 기본 방법으로 열려면 index 에 0 을 전달 • apiPreference : 선호하는 카메라 처리 방법을 지정 • retval: cv2.VideoCapture 객체 cv2.VideoCapture.open(index,apiPreference=None) ->retval • retval: 성공하면 True, 실패하면 False 동영상, 정지영상 시퀀스,..