C# OpenCV 강좌 : 제 53강 - 키 이벤트
키 이벤트(Key Event)
윈도우창에서 특정 키
를 입력하였을 때 해당 경우에 맞는 동작을 발생시킬 수 있습니다.
원본(Source, src)
은 영상이나 이미지를 사용합니다.
메인 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;
namespace Project
{
class OpenCV : IDisposable
{
IplImage gray;
IplImage key;
public IplImage GrayScale(IplImage src)
{
gray = new IplImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, gray, ColorConversion.BgrToGray);
return gray;
}
public IplImage KeyEvent(IplImage src)
{
key = src.Clone();
CvWindow win = new CvWindow("Window", WindowMode.StretchImage, key);
bool repeat = true;
while (repeat)
{
switch (CvWindow.WaitKey(0))
{
case 'r':
key = this.GrayScale(src);
win.ShowImage(key);
break;
case '\r':
key = src;
win.ShowImage(key);
break;
case (char)27:
win.Close();
repeat = false;
break;
}
}
return key;
}
public void Dispose()
{
if (gray != null) Cv.ReleaseImage(gray);
if (key != null) Cv.ReleaseImage(key);
}
}
}
세부 코드
key = src.Clone();
CvWindow win = new CvWindow("Window", WindowMode.StretchImage, key);
결과 이미지인 key
에 원본 이미지 src
를 복제합니다.
윈도우 창 win
을 생성하고 초기 이미지를 key
로 사용합니다.
bool repeat = true;
while (repeat)
{
...
}
while()
문을 이용하여 repeat
이 false
가 될 때까지 반복합니다.
switch (CvWindow.WaitKey(0))
{
...
}
switch()
문을 이용하여 키 입력값
을 판단합니다.
case 'r':
key = this.GrayScale(src);
win.ShowImage(key);
break;
r 키
가 입력됬을 때 해당 구문을 실행합니다.
key
필드에 그레이스케일
을 적용하고, win
윈도우 창에 표시합니다.
case '\r':
key = src;
win.ShowImage(key);
break;
Enter 키
가 입력되었을 때 key
필드를 src
로 다시 초기화시키고, win
윈도우 창에 표시합니다.
case (char)27:
win.Close();
repeat = false;
break;
Esc 키
가 입력되었을 때 win
윈도우 창을 닫고 반복
을 종료합니다.
아스키 값
이나 유니코드
를 사용할 경우 (char) 상수를 사용합니다.
- Tip :
case
문은 항상 마지막에break
문을 포함해야합니다.
출력 결과
공유하기


댓글 남기기