2023. 1. 17. 09:00ㆍVB.NET/OpenCVSharp
메인폼에 버튼 추가 - Name : ButtonSize, Text : Size
이미지 사이즈를 변경할때는 절대크기와 상대크기의 두가지 방법으로 변경이 가능하다. 절대크기는 이미지 사이즈를 수치로 직접 입력하는 것이고, 상대크기는 원본이미지의 비율에 맞춰서 크기를 변경하는 것이다.
코딩시 둘 사이에 별 차이가 없으니 아래 소스를 추가해서 확인해보자.
Private Sub ButtonSize_Click(sender As Object, e As EventArgs) Handles ButtonSize.Click
Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As New Mat
Cv2.Resize(org, dst, New OpenCvSharp.Size(200, 100))
'Cv2.Resize(org, dst, New OpenCvSharp.Size(0, 0), 0.1, 0.1)
PictureBoxOrg.Image = org.ToBitmap : PictureBoxDst.Image = dst.ToBitmap
End Sub
프로젝트 실행후 Size 버튼을 누르면 아래 화면과 같이 결과가 나와야 성공
뭐가 달라졌나 싶겠지만 대상이미지가 상당히 깨져있는 모습을 볼 수 있다. 이유는 PictureBox의 SizeMode 속성을 StretchImage로 만들었기 때문에 사이즈를 작게 변환한 대상 이미지를 픽처박스크기에 맞게 늘려서 이미지가 깨져보이는 것이다. 즉, 크기조절이 정상적으로 됐다는 얘기가 된다.
Line 1 : Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As New Mat
원본과 대상 매트릭스 선언
Line 2 : Cv2.Resize(org, dst, New OpenCvSharp.Size(200, 100))
이미지를 절대크기로 변경한다. 원본 이미지 크기가 얼마든 가로 200, 세로 100으로 강제로 크기를 조절한다. 원본 이미지 기준으로 상대크기로 변경하려면 그 아래줄 소스를 쓰면 된다.
Line 3 : Cv2.Resize(org, dst, New OpenCvSharp.Size(0, 0), 0.1, 0.1)
상대크기로 변경하는 방법은 절대크기로 변경할때 설정했던 Size를 0,0으로 맞춰주고, 이어서 가로 비율과 세로 비율을 적어주면 된다. Cv2 클래스 내부적으로 사이즈가 0,0일 경우 그뒤의 비율을 가져오는듯 하다.
그외에 파라미터로 이미지 보간법을 줘서 사이즈 변경시 좀더 세부조정이 가능하지만, 나는 별로 쓸일이 없어서 그냥 적어만 놔야겠다.
InterpolationFlags.Nearest - 가장 가까운 이웃 보간법
InterpolationFlags.Linear - 쌍 선형 보간법
InterpolationFlags.Area - 영역 보간법
InterpolationFlags.Cubic - 4×4 바이 큐빅 보간법
InterpolationFlags.Lanczos4 - 8×8 란초스 보간법
별 이상한 이름이 있는데 딱히 필요성을 느낀적은 없어서 써본적도 없다.
이미지 크기변경도 이미지 제어시 자주 사용하는 기능중 하나이니 잘 알아두도록 하자.
'VB.NET > OpenCVSharp' 카테고리의 다른 글
[VB.NET] 차근차근 OpenCVSharp 강좌 - 7. 자르기 (0) | 2023.01.19 |
---|---|
[VB.NET] 차근차근 OpenCVSharp 강좌 - 6. 이진화 (1) | 2023.01.18 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 4. 이미지 회전 (0) | 2023.01.16 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 3. 이미지 대칭 (1) | 2023.01.14 |
[VB.NET] 차근차근 OpenCVSharp 강좌 - 2. Gray 이미지로 변환 (1) | 2023.01.13 |