[VB.NET] 차근차근 OpenCVSharp 강좌 - 14. 이미지 위에 글씨 쓰기

2023. 1. 26. 09:00VB.NET/OpenCVSharp

이미지 위에 글씨를 쓰는건 정말 빈번하게 사용하는 기능인 만큼 OpenCVSharp에서도 다양한 옵션과 기능을 제공하니 잘 알아두도록 하자. 이번 예제에서는 다람쥐 사진 위에 정말 간단하게 VB.NET이라는 글씨를 써볼꺼다. 그러면서 함수 설명시 글자색, 위치, 크기, 모양등 다양한 기능을 설명할 예정이니 하나씩 바꿔가면서 눈으로 결과를 꼭 확인하고 넘어가도록 하자.

메인폼에 버튼 추가 - Name : ButtonText, Text : Text

버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자.

Private Sub ButtonText_Click(sender As Object, e As EventArgs) Handles ButtonText.Click
    Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As New Mat
    org.CopyTo(dst)
    Cv2.PutText(dst, "VB.NET", New Point(100, 200), HersheyFonts.HersheyDuplex, 5, New Scalar(0, 255, 0))
    PictureBoxOrg.Image = org.ToBitmap : PictureBoxDst.Image = dst.ToBitmap
End Sub

프로젝트 실행후 Text 버튼을 누르면 아래 화면과 같이 결과가 나와야 성공

OpenCVSharp - Text

이번 강좌에서는 다른 줄은 따로 설명 안하고 Cv2.PutText 함수 부분만 자세히 알아보도록 하자.

Lien 3 : Cv2.PutText(dst, "VB.NET", New Point(100, 200), HersheyFonts.HersheyDuplex, 5, New Scalar(0, 255, 0))

1. 첫번째 파라미터 : dst
  PutText 함수는 Cv2 클래스의 다른 함수들과 다르게 하나의 이미지 배열을 파라미터로 받아서 해당 이미지에 텍스트를 입혀버린다. 그래서 다른 함수처럼 파라미터에 org, dst를 모두 넣지 않고 dst만 넣기 때문에 윗줄에서 dst에 org와 동일한 이미지를 넣어놓아야 한다. 이게 CopyTo 함수의 역할이라는건 이제 모두 알것이다.
  개인적인 생각이지만 이런식으로 파라미터의 배열을 직접 변경해야 중복해서 계속 다른 텍스트를 입힐 수가 있기 때문에 다른 함수들과 다른 구조로 만든게 아닐까 생각된다.

2. 두번째 파라미터 : "VB.NET"
  텍스트 내용이다. 여기서는 VB.NET을 입력하기로 했으니 그대로 가자. 다른 텍스트를 더 입력하려면 이 함수를 여러번 호출하면 된다.

3. 세번째 파라미터 : New Point(100, 200)
  텍스트의 시작점 위치. 내 이미지의 어느 위치에도 텍스트를 입력할 수 있다.

4. 네번째 파라미터 : HersheyFonts.HersheyDuplex
  텍스트의 테두리인가보다. 두줄짜리, 한줄짜리등 그냥 HersheyFonts 구조체의 하위 값들을 하나씩 변경해보면서 실행해보면 의미를 금방 알 수 있다.

5. 다섯째 파라미터 : 5
  텍스트의 글자크기. 이 값도 1도 넣어보고 10도 넣어보고 이래저래 바꿔보면 바로 알 수 있는 부분이다.

6. 여섯째 파라미터 : New Scalar(0, 255, 0)
  텍스트의 글자색. 이것도 RGB가 아닌 BGR 순서이니 헷갈리지 말자. 이 예제에서는 Green만 255로 줬기 때문에 텍스트의 색깔이 Green 색으로 나왔다.

이들 여섯개 외에도 Optional 형식으로 여러 파라미터가 있으니 하나씩 값을 넣어보며 텍스트가 어떻게 변경되는지 직접 확인하고 넘어가도록 하자.

PutText라는 함수만 하나 알아두면 이미지에 텍스트를 입히는게 그리 어렵지 않으니 OpenCVSharp의 대단함을 다시 한번 느끼게 되는 시간이었다.

ps.
이번 강좌에서는 여태까지 만들어온 예제를 첨부하니 다운받아서 직접 실행해보도록 하자. 처음 다운로드후 실행할때에는 NuGet 패키지를 포함시키느라 디버깅 오류가 발생할 수 있지만 Visual Studio 2022 Community에서는 알아서 프로젝트에 포함시키니 다시 실행해보면 정상 실행이 되는걸 확인할 수 있을것이다.

프로젝트에 포함돼 있는 chipmunk.jpg와 carnation.jpg도 압축파일에 포함시켜 놨으니, D:\test\ 폴더에 압축을 풀어주고 실행하면 된다. 부득이 D:\test\ 폴더를 사용할 수 없다면 임의의 폴더에 복사후 소스에서 이미지파일의 경로를 수정해주면 된다.

OpenCVSharpExam.zip
0.74MB

반응형