디지털영상처리 - OpenCV 인터페이스.

2024. 4. 8. 11:40---Learning (학습)---/디지털영상처리(파이참)

728x90

OpenCV 인터페이스

 

콜백 함수는 개발자가 함수를 직접 호출하는 것이 아니라, 어떤 이벤트가 발생하거나 특정 시점에 도달했을 때, 시스템에서 개발자가 등록한 함수를 호출하는 방식이다. OpenCV의 cv2.setMouseCallback() 함수와 cv2.createTrackbar() 함수를 사용해서 마우스와 트렉바 이벤트를 처리하는 콜백 함수를 등록할 수 있다.

OpenCV에서 윈도우의 이름을 지정하는 함수는 cv2.namedWindow() 이고, cv2.imshow() 함수로 지정된 윈도우에 행렬을 영상으로 표시할 수 있다.

cv2.waitKey() 함수와 cv2.waitKeyEx() 함수는 지정된 대기 시간 동안 키보드 키를 입력 받을 수 있는 함수로서, 키 이벤트를 처리하거나 윈도우 창을 바로 닫지 않고 대기시킬 때 사용된다.

OpenCV는 선과 사각형을 그려주는 cv2.line() 함수와 cv2.rectangle() 함수를 제공하며, 원과 타원을 그려주는 cv2.circle() 함수와 cv2.ellipse() 함수도 제공한다.

타원 및 호를 그려주는 cv2.ellipse() 함수의 인수는 대상 행렬, 중심점, 타원 크기, 타원 각도, 호 시작 각도, 호 종료 각도, 색상, 크기 등이 있다.

영상파일을 읽어서 영상 데이터인 행렬로 반환해주는 함수는 cv2.imread() 함수이다. 이때 반환 시의 컬러 타입을 결정하는 flag 인수를 활용해서 명암도 영상, 컬러 영상, 16비트/32비트 영상으로 읽을 수 있다

행렬을 영상파일로 저장하기 위해서는 cv2.imwrite() 함수를 이용한다. 확장자로 저장할 파일의 포맷을 결정하며, 추가 인수인 params로 압축을 통한 화질을 지정할 수 있다.

OpenCV는 동영상파일이나 PC 카메라의 프레임 영상을 처리할 수 있는 cv2.VideoCapture 클래스를 제공한다. 
cv2.VideoCapture.open() 메서드로 동영상 파일을 개방한 후, cv2.VideoCapture.read() 메서드로 동영상 시퀀스에서 하나의 프레임을 행렬로 가져온다. 
또한 cv2.VideoCapture.get() 메서드와 cv2.VideoCapture.set() 메서드로 카메라의 속성 정보를 확인하고, 변경할 수 있다.

연속적인 행렬 데이터를 동영상파일로 저장할 수 있는 cv2.VideoWriter 클래스를 제공한다. 
cv2.VideoWriter.open() 메서드로 저장할 동영상 파일을 개방한 후, cv2.VideoWriter().write() 메서드로 연속적인 행렬을 저장한다. 
또한 cv2.VideoWriter_fourcc() 함수로 동영상 압축 코덱을 지정할 수 있다.

Matplotlib 라이브러리의 pyplot 모듈은 ndarray 객체의 데이터를 쉽게 시각화할 수 있다. 모듈 내에 imshow() 함수는 2차원 데이터를 영상으로 표시하며, plot() 함수는 1차원 데이터를 그래프로 표시해 준다. 
      또한 subplot() 함수와 subplots() 함수를 사용해서 여러 개의 서브 플롯을 하나의 그림 객체에 나타낼 수 있다.

728x90