Python

[Python] Opencv의 imread 함수는 뭔가요?

그러게 말이에요? 2023. 4. 26. 04:04
반응형

😛   imread 함수의 옵션으로 대표적인 것들은 무엇인가요?

 imread()는 이미지를 불러오는 함수이며, 옵션은 '어떤 방식'으로 불러올지를 의미합니다.  

그 방식으로는 크게 세 가지의 종류가 있는데,  아래와 같습니다.

  • imread_color
  • imread_grayscale
  • imread_unchanged

 앞서 언급한 적 있는 함수들인데, 추가적으로 한 가지 더 소개할 예정입니다. 

 

 아래 사진은 옵션별 결과를 확인하기 위한 원본 이미지입니다!

 

결과 확인을 위한 테스트용 이미지

 

😛   imread _color

 imread_color란, 이미지를 컬러로 읽어오고 투명한 부분을 무시합니다. 

보다 정확한 의미로는 이미지를 컬러로 받아오되, BGR 색으로 읽어냅니다. 

opencv에서는 RGB(Red Green Blue)를 BGR로 표현하며, 의미는 다르지 않습니다.

 

 실행 결과는 아래와 같습니다.

 

imread_color 옵션 적용 결과

 

 imread_color는 투명한 부분이 있는 이미지를 제외하면 거의 원본 이미지와 같다고 볼 수 있습니다.

 

😛   imread _grayscale

 imread_grayscale이란, 이미지를 흑백으로 출력합니다. 

이미지를 흑백으로 읽어오게 되면, 이미지에 대한 연산량도 감소합니다. 

또한 특정 대상에 대한 가장자리 감지가 용이해집니다. 

 

 실행 결과는 아래와 같습니다.

 

imread_grayscale 옵션 적용 결과

 

😛   imread _unchanged

 imread_unchanged는 imread_color의 특징을 가지고 있으나 조금 다릅니다.

imread_color는 투명한 부분을 제외하고 BGR형식으로 색을 읽어냈다면 이 옵션은 투명한 부분도 읽어냅니다.

정확히는 이미지 파일을 'Alpha channel'까지 포함하여 읽습니다. 

 

 Alpha channel이란, 이미지의 투명도에 관여하며, 이미지 색상 3채널(BGR)에 대해 추가된 채널을 말합니다.

추가한 Alpha channel은 네 번째 채널이 되며 각 픽셀의 투명도를 지정할 수 있습니다. 

따라서 Alpha channel은 색상 채널과 동일한 차원이 되고 이미지는 아래와 같이 구성됩니다. 

 

이미지의 구성(I = 이미지, a=투명도  ,F=전경 강도, B=배경 강도)

 하지만 Alpha channel에 대한 정보가 없다면 color와 다르지 않습니다. 

 

실행 결과는 아래와 같습니다. 

 

imread_unchanged 옵션 적용 결과

 

 위의 사진의 경우 이미지에 대해 Alpha channel의 정보가 없기 때문에 

imread_color와 결과가 같습니다. 

 

😛   imread _anycolor 

 imread_anycolor는 언급하지 않았지만 imread_color와는 달리 

모든 색상을 출력 가능하다는 점이 있어 적어보았습니다.

 

 하지만 imread_anycolor가 imread_color의 BGR이

선택한 색상을 고른다면 큰 차이를 느낄 수 없다는 점이 있습니다. 

반응형