이미지(10)
-
[VB.NET] 차근차근 OpenCVSharp 강좌 - 17. 이미지 윤곽선
이미지 윤곽선이란 각 이미지별 테두리 가장자리 라인을 구하는걸 뜻한다. 사람이 그림을 그릴때 처음으로 그리게 되는 대략적인 테두리를 의미한다고 보면 된다. 보통 이렇게 테두리를 따려고 할때는 그레이 이미지를 기준으로 한다. 이건 이전 강좌중 이진화때와 비슷한데 컬러이미지의 테두리를 바로 따게 되면 중간값들에서 원치 않는 결과가 나오기 때문에 일단 그레이로 변경 후 테두리를 따고 이 좌표를 이용해서 컬러이미지의 테두리를 구하게 된다. 이미지 윤곽선을 구하기 위해서는 현저하게 픽셀값이 변하는 지점을 찾아야 하는데 내부적으로 미분을 이용하고, 이에 따른 미분지수도 활용해야 한다. 일반적으로 너무 어렵기 때문에 이번 강좌에서는 종류와 결과만 알아보고 더 자세한 부분은 검색을 통해 알아보도록 하자. 메인폼에 버튼..
2023.01.29 -
[VB.NET] 차근차근 OpenCVSharp 강좌 - 16. 이미지 비트연산
이미지 비트연산은 각 컬러값을 이진수로 변환후 비트별 연산을 수행하게 된다. And, Or, Not, Xor 이렇게 네개의 연산자를 제공하며 각각 BitwiseAnd, BitwiseOr, BitwiseNot, BitwiseXor의 함수명으로 제공된다. 이번 강좌에서 비트연산에 대한 개념은 별도로 다루지 않으니 비트연산에 대해서 모르시는 분들은 검색해서 내용 숙지후 이 강좌를 봐주시기 바란다. 메인폼에 버튼 추가 - Name : ButtonBitwise, Text : Bitwise 버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자. Private Sub ButtonBitwise_Click(sender As Object, e As EventArgs) Handles ButtonBitwise.Click Dim ..
2023.01.28 -
[VB.NET] 차근차근 OpenCVSharp 강좌 - 14. 이미지 위에 글씨 쓰기
이미지 위에 글씨를 쓰는건 정말 빈번하게 사용하는 기능인 만큼 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\ch..
2023.01.26 -
[VB.NET] 차근차근 OpenCVSharp 강좌 - 13. 모자이크 처리
모자이크는 어떻게 구현하는걸까? 이전 강좌에서 잠깐 그 힌트를 얻을 수 있는 강좌가 있었는데 바로 이미지 확대/취소에서 힌트를 얻을 수 있다. 모자이크는 원하는 영역만큼을 축소한 후에 축소된 부분을 다시 확대하면 이미지 보간법에 의해 모자이크 처리가 되서 보이게 된다. 이미지 전체를 다 모자이크 처리한 결과는 이미지 축소/확대 강좌에서 확인해 보면 되겠고, 이번 강좌에서는 우리 다람쥐의 눈부분만 모자이크 처리해보자. 뉴스에서 모자이크 처리하는 그 방식이랑 비슷하다. 아래 사진 영역만 모자이크 처리해보자. 하다보니 눈이 한개밖에 없어서 좀 아쉽지만 그냥 그대로 진행해보자. 이 영역의 좌표는 (990,360 ~ 1320,440)이다. 이 좌표부분만 축소후 확대하면 된다. (Left: 990, Top: 360..
2023.01.25 -
[VB.NET] 차근차근 OpenCVSharp 강좌 - 12. 픽셀 절대값 / 절대값의 차이
절대값은 사실 그 자체만으로는 별 의미가 없지 싶다. 어차피 픽셀값이라는게 0~255까지니 음수는 존재하지 않는다. 다만 절대값의 차이는 좀 다르겠다. 절대값끼리의 뺄셈정도의 개념으로 생각해야 될까? 하여튼 이것도 그냥 이런게 있다 정도로 넘어가도 될듯 하지만 구현은 해보자. 메인폼에 버튼 추가 - Name : ButtonAbs, Text : Abs 버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자. Private Sub ButtonAbs_Click(sender As Object, e As EventArgs) Handles ButtonAbs.Click Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As Mat dst = Cv2.Ab..
2023.01.24 -
[VB.NET] 차근차근 OpenCVSharp 강좌 - 9. 픽셀 빼기
픽셀값 빼기는 더하기와 완전 동일하다. 그냥 값을 더하느냐 빼느냐의 차이. 메인폼에 버튼 추가 - Name : ButtonSubtract, Text : Subtract 버튼클릭 이벤트에 아래 소스를 추가해서 확인해보자. Private Sub ButtonSubtract_Click(sender As Object, e As EventArgs) Handles ButtonSubtract.Click Dim org As New Mat("D:\test\chipmunk.jpg", ImreadModes.Color), dst As New Mat Dim val As New Mat(org.Size(), MatType.CV_8UC3, New Scalar(0, 30, 0)) Cv2.Subtract(org, val, dst) Pic..
2023.01.21