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문을 포함해야합니다.
출력 결과


공유하기
Kakao
Naver
Twitter
LinkedIn
Facebook
댓글 남기기