이번 포스팅에서는 opencv를 통해 아래 양이미지를 읽는 방법에 대해 알아보도록 하겠습니다.
//sheep.jpg
1) 이미지 읽기
이미지를 읽을때는 image read의 약자인 imread함수를 이용하는데요. 인자로는 읽어올 파일의 경로를 적어주면 됩니다.
2) flag 설정
공식문서에 보면 imread함수에는 flag라는 인자값이 있는데요.
이는 해당 이미지를 읽어 올때 컬러 이미지로 읽을지, 그레이스케일 이미지로 읽을지 정하는 것이라고 보면 됩니다.
가령 컬러 이미지로 읽고 싶다면 cv2.IMREAD_COLOR,
그레이스케일 이미지로 읽고 싶을땐, cv2.IMREAD_GRAYSCALE 을 두번째 인자로 넣어주면 됩니다.
참고로 cv2.IMREAD_COLOR은 숫자 1로,
cv2.IMREAD_GRAYSCALE은 숫자 0으로 쓰이기도 하니 참고하기 바랍니다.
3) return image 값
imread함수를 통해 리턴받은 img값의 정체는 무엇일까요?
(1) 타입(type)
먼저 타입을 찍어보면,
output:
넘파이 ndarray이라는 것을 알 수 있습니다.
(2) shape
shape의 경우 flag를 어떻게 설정하느냐에 따라 달라 지는데요.
먼저 IMREAD_COLOR을 통해 이미지를 읽으면
3차원의 shape이고, 마지막 차원의 3은 BGR컬러 채널을 의미합니다.
IMREAD_GRAYSCALE을 통해 이미지를 읽으면,
채널 차원이 빠진 2차원의 shape이 출력됩니다.
(3) dtype
ndarray 내부 요소들의 타입은 무엇일까요?
uint8, 즉 unsigned int로, 0부터 255값을 의미합니다.
실제로 이미지를 print 해보면,
아래와 같은 int형태의 값들로 구성 되어 있습니다.
(4) 이미지 dtype 변경
이미지 프로세싱을 하다보면 디테일한 값의 변화를 체크하기 위해 dtype을 float형태로 바꿔줄 필요도 있는데요.
이때는 astype() 메소드를 이용하여 타입을 변경해주시면 됩니다.
'머신러닝,딥러닝 > opencv' 카테고리의 다른 글
[파이썬 opencv] 오픈 cv에서 yolov3 사용하는 방법 (2) | 2022.10.26 |
---|---|
[파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 (0) | 2022.10.21 |
[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) (0) | 2022.09.14 |
[파이썬 opencv] 두 이미지 합치는 방법(with 크기 다른 이미지) (0) | 2022.09.13 |
[opencv] 그림 그리기 | 글자 쓰는 법 (+ 한글 사용 방법) (0) | 2022.09.06 |
댓글