Python study/opencv

opencv - 이미지 다루기

Chef.lee 2023. 11. 29. 01:22

목표

  • 이미지 파일을 읽고, 보고, 저장하는 방법
  • 관련함수 cv2.imread(), cv2.imshow(), cv2.imwrite()

 

 

1.이미지 읽기


이미지 읽기 예제

cv2.imread() 함수를 이용하여 이미지를 읽을 수 있다. 

 

cv2.imread() 함수 설명

- Parameter :

  • FileName(str) - 이미지 파일의 경로 (상대/절대)
  • flag(int) - 이미지 파일을 읽을 때의 option(flag)

- Returns : image 객체 정렬

 

- Return type : numpy.ndarray

 

이미지 읽기의 flag (cv2.imread() 함수의 flag) 는 13가지가 있다.

  • cv2.IMREAD_UNCHANGED : 원본 사용
  • cv2.IMREAD_GRAYSCALE : 1 채널, 그레이스케일 적용
  • cv2.IMREAD_COLOR : 3 채널, BGR 이미지 사용
  • cv2.IMREAD_ANYDEPTH : 이미지에 따라 정밀도를 16/32비트 또는 8비트로 사용
  • cv2.IMREAD_ANYCOLOR : 가능한 3 채널, 색상 이미지로 사용
  • cv2.IMREAD_REDUCED_GRAYSCALE_2 : 1 채널, 1/2 크기, 그레이스케일 적용
  • cv2.IMREAD_REDUCED_GRAYSCALE_4 : 1 채널, 1/4 크기, 그레이스케일 적용
  • cv2.IMREAD_REDUCED_GRAYSCALE_8 : 1 채널, 1/8 크기, 그레이스케일 적용
  • cv2.IMREAD_REDUCED_COLOR_2 : 3 채널, 1/2 크기, BGR 이미지 사용
  • cv2.IMREAD_REDUCED_COLOR_4 : 3 채널, 1/4 크기, BGR 이미지 사용
  • cv2.IMREAD_REDUCED_COLOR_8 : 3 채널, 1/8 크기, BGR 이미지 사용
  • cv2.IMREAD_LOAD_GDAL : 이미지를 GDAL드라이버를 활용하여 읽는다.(GDAL : 지도관련 이미지 처리)
  • cv2.IMREAD_IGNORE_ORIENTATION : EXIF flag 에 따라 이미지 회전하지 않음

 

 

2. 이미지 보기


cv2.imshow() 함수를 이용하여 이미지를 사이즈에 맞게 보여줄 수 있다.

이미지 보기 예제코드

cv2.imshow()함수설명

-Parameters

  • title(str) - 윈도우 창의 return 값
  • image(numpy.ndarray) - cv2.imread() 의 return 값

cv2.waitkey()는 keyboard 입력을 대기하는 함수로 0 또는 아무것도 기입하지 않으면 무한대기상태. 

cv2.destroyAllWindows()는 화면에 나타난 윈도을 종료한다.

 

 

일반적으로 위 3개는 같이 사용된다.

imread and show sample code
result

sample code 참조 : https://github.com/CBike/opencv/blob/master/imread.py

 

GitHub - CBike/opencv

Contribute to CBike/opencv development by creating an account on GitHub.

github.com

 

3. 이미지 저장하기


cv2.imwrite() 함수를 이용하여 변환된 이미지나 동영상의 특정 프레임을 저장한다.

 

cv2.imwrite(fileName, image) 함수 설명

- Parameters : 

  • fileName(str) - 저장될 파일명
  • image - 저장할 이미지

 

Sample Code : https://github.com/CBike/opencv/blob/master/imwrite.py

 

GitHub - CBike/opencv

Contribute to CBike/opencv development by creating an account on GitHub.

github.com

 

이미지를 읽어서 esc 키를 누르면 종료, 's' key를 누르면 grayscale 이미지가 저장이 되는 sample

 

sample code
result

 

 

Matplotlib 사용하기


Matplotlib 는 다양한 plot 기능을 가진 python plot Library 이다.

이미지를 zoom 하거나 하나의 화면에 여러개의 이미지를 보고자 할 때 유용합니다.

 

 

Sample Code : https://github.com/CBike/opencv/blob/master/BGRtoRGB.py

 

GitHub - CBike/opencv

Contribute to CBike/opencv development by creating an account on GitHub.

github.com

samplecode

 

result

단 matplotlib 는 RGB로 이미지를 보여주기 때문에 사용시 배열순서를 바꿔 주어야 한다.

 

Sample Code :

cv2.cvtColor('',cv2.COLOR_BGR2RGB)
result