2023. 1. 31. 09:00ㆍVB.NET/OpenCVSharp
OpenCVSharp은 여러가지 컬러 모드를 지원하며 바로바로 변환이 가능하다.
메인폼에 버튼 추가 - Name : ButtonCVColor, Text : CVColor
버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자.
Private Sub ButtonCVColor_Click(sender As Object, e As EventArgs) Handles ButtonCVColor.Click
Dim org As New Mat("D:\test\ocean.jpg", ImreadModes.Color)
Dim dst = org.CvtColor(ColorConversionCodes.BGR2GRAY)
PictureBoxOrg.Image = org.ToBitmap : PictureBoxDst.Image = dst.ToBitmap
End Sub
프로젝트 실행후 CVColor 버튼을 누르면 아래 화면과 같이 결과가 나와야 성공
소스는 아주 단순하지만 코드설명이 중요하니 한줄씩 살펴보자.
Line 1 : Dim org As New Mat("D:\test\ocean.jpg", ImreadModes.Color)
원본 이미지를 저장공간 매트릭스에 넣는다. 이때 이미지 모드는 Color모드로 넣게 된다.
Line 2 : Dim dst = org.CvtColor(ColorConversionCodes.BGR2GRAY)
원본 컬러 이미지를 BGR2GRAY 모드로 컨버전한다. BGR 모드의 이미지를 Gray 모드로 변환하게 된다. 같은 구문으로 아래와 같이 사용해도 된다.
Dim dst AS New Mat
Cv2.CvtColor(org, dst, ColorConversionCodes.BGR2GRAY)
결과는 동일하니 마음에 드는 형식으로 사용하도록 하자.
Line 3 : PictureBoxOrg.Image = org.ToBitmap : PictureBoxDst.Image = dst.ToBitmap
결과를 픽처박스에 뿌린다.
여기서 ColorConversionCodes enum의 세부 코드들에 대해 하나씩 알아보자. 아주 많으니 대표적이고 많이 사용되는 코드만 확인해보자. 이 코드를 사용할때 아주 중요한 주의사항이 있는데 원본이미지의 모드를 맞춰줘야 한다는거다. 예를 들어서 BGR2GRAY는 BGR 이미지를 Gray 이미지로 변환하는 코드이니 원본이미지는 반드시 BGR 형식의 이미지여야 한다. BGR2GRAY 코드를 사용하면서 원본이미지가 Gray 형식이면 오류를 뱉어내고 더이상 동작하지 않으니 주의하자.
BGR - Blue, Green, Red 형식으로 이루어진 이미지 - OpenCVSharp의 기본 형식
BGRA - Blue, Green, Red, Alpha 형식으로 이루어진 이미지
RGB - BGR과 동일하지만 Red, Green, Blue 형식으로 이루어진 이미지
RGBA - Red, Green, Blue, Alpha 형식으로 이루어진 이미지
Gray - 흑백 256컬러 단일채널 이미지
HSV - 색상(Hue), 채도(Saturation), 명도(Value) 형식으로 이루어진 이미지. 자세한 내용은 이전 강좌를 참고하세요.
이정도만 알아도 웬만한 코드는 알아서 사용이 가능하다. 실제 코드는 이들을 조합해서 사용하면 된다. BGR2RGB 이런식으로 사용하면 된다. 더 자세한 정보는 https://076923.github.io/posts/Python-opencv-10/ 여기에서 확인하면 되겠다.
'VB.NET > OpenCVSharp' 카테고리의 다른 글
[VB.NET] 차근차근 OpenCVSharp 강좌 - 18. HSV (0) | 2023.01.30 |
---|---|
[VB.NET] 차근차근 OpenCVSharp 강좌 - 17. 이미지 윤곽선 (0) | 2023.01.29 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 16. 이미지 비트연산 (0) | 2023.01.28 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 15. 이미지 위에 도형 그리기 (0) | 2023.01.27 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 14. 이미지 위에 글씨 쓰기 (0) | 2023.01.26 |