반응형
안녕하세요
저번 시간에 이미지 그레이 효과 주기를 포스팅 했었는데요
이어서 이번에는 이미지에 이진화 효과 주기를 포스팅 해보도록 하겠습니다
저번 포스팅과 연결되어 진행 되오니 아래 링크를 확인해서 저번 포스팅을 확인해 보세요
https://codingman.tistory.com/51
[디자인]
- Menu에 다음과 같이 필터 -> 이진화 메뉴를 등록해 줍니다
[Source Code]
- 이진화 메뉴에 클릭이벤트 생성
- 이벤트 위치에 다음과 같이 코딩해 줍니다
private void 이진화ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (gray gg = new gray())
using (IplImage temp = gg.ThresholdProcess(src))
{
result = temp.Clone();
}
pictureBoxIpl2.ImageIpl = result;
}
- 그리고 저번 시간 생성했던 gray.cs 클래스 파일을 똑같이 적용 시킵니다
(이미 저번 포스팅에 사용한 gray 클래스 파일에 코딩내용이 포함되어 있음)
(혹시 귀찮은 분들을 위해서 다시 작성함)
using System;
using System.Collections.Generic;
using System.Text;
using OpenCvSharp;
namespace OpenCV_V1
{
class gray : IDisposable
{
IplImage subgray;
public IplImage grayProcess(IplImage src)
{
subgray = new IplImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, subgray, ColorConversion.BgrToGray);
return subgray;
}
public void Dispose()
{
if (subgray != null) Cv.ReleaseImage(subgray);
}
public IplImage ThresholdProcess(IplImage src)
{
subgray = new IplImage(src.Size, BitDepth.U8, 1); //메모리 확보
Cv.CvtColor(src, subgray, ColorConversion.BgrToGray); //그레이로 변환
Cv.Smooth(subgray, subgray, SmoothType.Gaussian, 5); //가우시안 스무스 주기
Cv.Threshold(subgray, subgray, 120, 255, ThresholdType.Binary); //120은 기준이 될 임계치
return subgray;
}
public IplImage BuildCanny(IplImage src)
{
subgray = new IplImage(src.Size, BitDepth.U8, 1); //메모리 확보
Cv.CvtColor(src, subgray, ColorConversion.BgrToGray); //그레이로 변환
Cv.Canny(subgray, subgray, 80, 255);
return subgray;
}
public IplImage BuildSobel(IplImage src)
{
subgray = new IplImage(src.Size, BitDepth.U8, 1);//메모리 확보
Cv.CvtColor(src, subgray, ColorConversion.BgrToGray); //그레이로 변환
Cv.Sobel(subgray, subgray, 1, 0, ApertureSize.Size3);
return subgray;
}
public IplImage BuildLaplace(IplImage src)
{
subgray = new IplImage(src.Size, BitDepth.U8, 1);//메모리 확보
using (IplImage temp = new IplImage(src.Size, BitDepth.S16, 1))
using (IplImage graytemp = new IplImage(src.Size, BitDepth.U8, 1))
{
Cv.CvtColor(src, graytemp, ColorConversion.BgrToGray); //그레이로 변환
Cv.Laplace(graytemp, temp);
Cv.ConvertScaleAbs(temp, subgray);
return subgray;
}
}
}
}
- 위의 과정을 모두 하셨다면 프로그램 실행한 후에 이미지를 불러온뒤에 이진화 버튼 클릭하면 변경 됩니다
반응형
'코딩정보 > OpenCv' 카테고리의 다른 글
[C#] OpenChSharp 라플레스엣지 효과 주기 (0) | 2019.12.30 |
---|---|
[C#] OpenCvSharp 소벨엣지 효과 주기 (0) | 2019.12.30 |
[C#] OpenCvSharp 캐니엣지 효과 주기 (0) | 2019.12.30 |
[C#] OpenCvSharp 그레이 효과 주기 (0) | 2019.12.30 |
[OpenCV] OpenCVSharp 분석하기 (0) | 2019.12.24 |