반응형
안녕하세요
요즘 C#으로 연습중인 OpenCv에서 불러온 이미지에 전체 그레이 효과를 주는 이벤트를
제작해 보겠습니다
C#을 통해 OpenCv 라이브러리 등록방법은 아래 링크를 확인해주세요
https://codingman.tistory.com/49
그다음 C#을 통해 OpenCv 그림박스에 이미지 불러오기는 아래 링크를 확인해 주세요
https://codingman.tistory.com/48
이렇게 위의 과정을 모두 이해하셨다면 이제 이어서 불러온 이미지에 그레이 효과를 넣어보도록 하겠습니다
[디자인]
미리 만들어 놓은 MenuStepmenuStrip에 필터 -> 그레이라는 메뉴를 등록합니다
[Source Code]
-MenuStep에서 그레이 버튼을 클릭하였을때 실행될 클릭 이벤트를 생성합니다
- 그다음 해당 클릭 이벤트에 다음과 같이 코딩 합니다
private void 그레이ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (gray gg = new gray())
using (IplImage temp = gg.grayProcess(src))
{
result = temp.Clone();
}
pictureBoxIpl2.ImageIpl = result;
}
- 그다음 이미지 필터 기능을 쉽게 구별할수 있도록 그레이 클레스를 생성합니다
- 생성된 gray.cs 파일에 다음과 같이 코딩합니다
[Source Code]
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 |