반응형

2020/09 100

[파이썬 OpenCV] 연산 시간 측정 방법 - cv2.TickMeter

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 연산 시간 측정 방법 컴퓨터 비전은 대용량 데이터를 다루고, 일련의 과정을 통해 최종 결과를 얻으므로 매 단계에서 연산 시간을 측정하여 관리할 필요가 있습니다. 1. 연산 시간 측정 - cv2.TickMeter OpenCV에서는 TickMeter 클래스를 이용하여 연산 시간을 측정할 수 있습니다. [함수 설명] cv2.TickMeter() -> tm • tm: cv2.TickMeter 객체 cv2.TickMerer() 클래스 안에 있는 메소드를 확인하겠습니다. • tm.start() : 시간 측정 시작 • tm.stop() : 시간 측정 끝 • tm.reset() : 시간 측정 초기화 • tm.getTimeSec() : 측정 시간을 초 단위로..

[파이썬 OpenCV] 트랙바를 이용한 그레이스케일 레벨 표현하기 - cv2.createTrackbar

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 트랙바 사용하기 - cv2.createTrackbar 트랙바에 대해 알아보고 트랙바를 이용하여 그레이스케일 레벨을 표현하도록 해보겠습니다. 트랙바(Trackbar)는 프로그램 동작 중 사용자가 지정한 범위 안의 값을 선택할 수 있는 컨트롤 입니다. OpenCV에서 제공하는 그래픽 사용자 인터페이스 입니다. 윈도우 창에 트랙바를 생성하여 영상의 속성값을 바꿔줄 수 있습니다. 1. 트랙바 생성 함수 - cv2.createTrackbar cv2.createTrackbar()는 트랙바를 생성해주는 함수입니다. 트랙바 이벤트 콜백 함수를 불러옵니다. [함수 설명] cv2.createTrackbar(trackbarName, windowName, valu..

[파이썬 OpenCV] 마우스를 이용해 그리기 - cv2.setMouseCallback

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 마우스 이벤트 처리하기 마우스 이벤트 처리하는 방법을 알아보고 마우스를 이용해 그림을 그려보도록 하겠습니다. 1. 마우스 이벤트 콜백함수 등록함수 - cv2.setMouseCallback 마우스 이벤트가 입력되면 사전에 작성한 함수를 불러와서 작동시킵니다. [함수 설명] cv2.setMouseCallback(windowName, onMouse, param=None) -> None • windowName: 마우스 이벤트 처리를 수행할 창 이름 • onMouse: 마우스 이벤트 처리를 위한 콜백 함수 이름. • param: 콜백 함수에 전달할 데이터 [예시 코드] # 윈도우 창 cv2.namedWindow('image') # 마우스 입력, nam..

[파이썬 OpenCV] 키보드 입력으로 출력된 영상 반전 시키기 - cv2.waitkey, ord() 함수

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 키보드 이벤트 처리하기 이번 포스팅에서는 키보드 이벤트 처리하기를 알아보고 응용으로 'I' 키를 누르면 영상이 반전되는 것을 해보겠습니다. 1. 키보드 입력 대기 함수 cv2.waitkey 함수로 키보드 이벤트를 처리할 수 있습니다. [명령어 설명] cv2.waitKey(delay=None) -> retval • delay: 밀리초 단위 대기 시간. delay  0 이면 무한히 기다림. 기본값은 0 • retval: 눌린 키 값(ASCII code). 키가 눌리지 않으면 -1. [참고 사항] ▪ cv2.waitKey() 함수는 OpenCV 창이 하나라도 있을 때 동작합니다. ▪ 특정 키 입력을 확인하려면 ord() 함수를 이용합니다. ▪ 주..

[파이썬 OpenCV] 동영상 저장하기 - cv2.VideoWriter 클래스

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 동영상 저장하기 - cv2.VideoWriter 클래스 cv2.VideoWriter 클래스를 이용해서 영상을 저장하는 방법을 알아보겠습니다. OpenCV에서는 cv2.VideoWriter 클래스를 이용하여 일련의 프레임을 동영상 파일로 저장할 수 있습니다. 일련의 프레임은 모두 크기와 데이터 타입이 같아야 합니다. 또한 Fourcc (4-문자 코드, four character code)를 지정해줘야 합니다. Fourcc는 동영상 파일의 코덱, 압축 방식, 색상, 픽셀 포맷 등을 정의하는 정수 값입니다. 1. 저장을 위한 동영상파일 열기 영상을 저장하기 위해서는 cv2.VideoWriter 객체를 생성해야 합니다. [명령어 설명] cv2.Vid..

[파이썬 OpenCV] 카메라와 동영상 열기, 속성값 참조, 프레임 받아오기 - cv2.VideoCapture 클래스

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 카메라와 동영상 열기 OpenCV에서는 카메라와 동영상으로부터 프레임(frame)을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리합니다. open()으로 카메라나 동영상을 열고 read()로 프레임을 가져옵니다. 1. 카메라 열기 - cv2.VideoCapture cv2.VideoCapture() 명령어로 카메라를 열 수 있습니다. [명령어 설명] cv2.VideoCapture(index, apiPreference=None) -> retval index : camera_id + domain_offset_id 시스템 기본 카메라를 기본 방법으로 열려면 index에 0을 전달합니다. 장치관리자에 등록되어 있는 카메라 순서대로 ..

[파이썬 OpenCV] 그리기 함수 - line, rectangle, circle, polyines, putText

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. OpenCV 그리기 함수 OpenCV는 영상에서 선, 도형, 문자열을 출력하는 그리기 함수를 제공합니다. 선 그리기(직선, 화살표, 마커), 도형 그리기(사각형, 원, 타원, 다각형), 문자열 출력 함수를 알아보고 영상에 적용해보겠습니다. [그리기 함수 사용시 주의할 점] 1. 영상의 픽셀 값 자체를 변경합니다. -> 원본 영상이 필요하면 복사본을 만들어서 그리기&출력을 해야 합니다. 2. 그레이스케일 영상에는 컬러로 그리기가 안됩니다. -> cv2.cvtColor() 함수로 BGR 컬러 영상으로 변환한 후 그리기 함수를 호출합니다. 1. 직선 그리기 - cv2.line() cv2.ling()을 이용하면 영상에 직선을 그릴 수 있습니다. 함수..

[파이썬 OpenCV] 마스크 연산과 ROI - cv2.copyTo 함수 이용 방법

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 마스크 연산과 ROI 마스크 연산과 ROI에 대해 알아보도록 하겠습니다. ROI Reigion of Interest, 관심 영역 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역을 의미합니다. 마스크 연산 OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 이때 마스크 영상을 인자로 함께 전달해야 합니다. OpenCV 함수 (cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplater(), etc....) 마스크 영상은 cv2.CV_8UC1 타입(그레이스케일 영상) 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행됩니다. -> 0과 1의 차이는 눈으로 확인하기 힘드..

[파이썬 OpenCV] 영상의 생성, 복사, 부분 영상 추출

영상의 생성, 복사, 부분 영상 추출 파이썬 OpenCV라이브러리를 활용해서 영상의 생성, 복사, 부분 영상 추출하는 법을 알아보겠습니다. 1. 지정한 크기로 새 영상 생성하기 numpy 명령어를 이용해 배열을 생성하여 영상으로 이용할 수 있습니다. 4가지 방법이 있습니다. (a) numpy.empty(shape, dtype=np.unit8, ...) -> arr : 임의의 값으로 초기화된 배열을 생성 (b) numpy.zeros(shape, dtype=np.unit8, ...) -> arr : 0으로 초기화된 배열을 생성 (c) numpy.ones(shape, dtype=np.unit8, ...) -> arr : 1로 초기화된 배열을 생성 (d) numpy.full(shape, full_vaule, d..

[파이썬 OpenCV] 영상의 속성과 픽셀 값 참조

영상의 속성과 픽셀 값 참조 OpenCV는 영상 데이터를 numpy.ndarray로 표현합니다. 영상의 속성을 참조하는 명령어는 다음과 같습니다. .ndim : 차원 수, len(img.shape)와 같음 .shape : 각 차원의 크기, 흑백(h,w), 컬러(h,w,3), png(h,w,4) .size : 전체 원소 개수 .dtype : 원소의 데이터 타입. 영상 데이터는 unit8 (1) OpecCV 영상 데이터 자료형과 NumPy 자료형 추후에 OpenCV 자료형으로 입력값을 넣어줘야 하는 경우가 있으므로 기억해 둡시다. (2) 영상의 속성 참조 예제 영상의 속성을 확인하는 코드를 보겠습니다. import sys import cv2 # 영상 불러오기 img1 = cv2.imread('cat.bmp'..

반응형