본문 바로가기

Python

[python/opencv] python opencv 함수 분석

728x90
반응형

python opencv 함수 정리


cap = cv2.VideoCapture(vid_path)

: 비디오캡쳐 객체 생성(vid_path : 어떤카메라 쓸지)

ret, previous_frame1 = cap.read()

 : ret : true/false(제대로프레임읽었는지), previous_frame1 : 프레임, cap.read() : 비디오의 한 프레임씩 

previous_frame = cv2.cvtColor(previous_frame1, cv2.COLOR_BGR2GRAY)

 : cvtColor(프레임, 흑백으로 변환)
hsv = np.zeros_like(previous_frame1)
 : 이미 있는 프레임 배열 모양에서 0으로 채워 반환

total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

 : 프레임 수 추출

current_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

 : 흑백처리

current_frame = cv2.GaussianBlur(current_frame, (13,13), 0) 

 : 블러처리

frame_diff = cv2.absdiff(current_frame,previous_frame)

 : 두 프레임 사이의 다른 부분 절대값 계산

ret ,binary_image1 = cv2.threshold(frame_diff,3,255,cv2.THRESH_BINARY)

 : 임계값 적용 함수. threshould(이미지프레임, 임계값, 임계값 넘었을 때 적용값, 바이너리타입)

n_labels, img_labeled, lab_stats, _ = \

            cv2.connectedComponentsWithStats(binary_image1, connectivity=8,

                                             ltype=cv2.CV_32S)

 : ,_  의미 : 결과의 해당 위치 값 무시

 : 라벨링 함수. binary_image1 : 레이블링 할 이미지, connectivity : 레이블링 된 이미지의 중심 좌표,
   n_labels : 라벨 번호, img_labeled : 각 레이블링 부분의 이미지 배열, lab_stats : 모두 레이블링 된 이미지 배열
argsort()
 : 소팅한 인덱스 반환
binary_image1.shape
 : .shape는 배열을 튜플로 만드는 것
cnts1 = cv2.findContours(largest_mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 : 외곽선 찾는 함수. cnts1:외곽선 내용, largest_mask.copy():원본이미지, cv2.RETR_EXTRERNAL:윤곽 검색 모드, cv2.CHAIN_APPROX_SIMPLE:윤곽 근사 모드
len()
 : 배열 길이 크기

mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])

 : 좌표를 극좌표로 변환. (인풋배열1, 인풋배열2), mag : 크기, ang : 각도

final_binary = cv2.bitwise_and(binary_image2,binary_image1)

 : and 마스크 연산


728x90
반응형