Open CV사용하는 이유중에 하나인 웹캠을 이용하기 위해서 입니다.

다른 방법도 있습니다만 크로스플랫폼(Cross Platform)을 생각한다면  OpenCV를 빼고 가기 힘들죠 ㅎㅎ

 

OpenCV를 닷넷으로 랩핑한 'OpenCVSharp'을 이용하여 웹캠에서 이미지를 받아오겠습니다.

 

 

 

1. 프로젝트 생성

윈폼 프로젝트를 생성합니다.

이전글을 참고하여 프로젝트에 DLL을 복사합니다.

(참고 : [C#.Net, OpenCVSharp] 'opencvsharp'를 이용하여 C#에서 OpenCV 사용하기 - '2.설치하기' 참고)

 

 

1-1. 디자이너

폼에 픽처박스 한개와 타이머 하나를 추가 합니다.

pictureBox1

timer1

 

 

 

 

 

 

 

1-2. 코드 작성

코드는 이전글과 비슷합니다.

단지 이미지를 불러오는 것이 아니라 캠 장치에서 읽어 오는 것으로 바뀐것 뿐이죠.

 

타이머가 추가된 이유는 일정 간격을 두고 캠의 화면을 불러오려고 그렇습니다.

 

namespace OpenCV_CamTest
{
	public partial class Form1 : Form
	{
		IplImage m_cvImg;
		CvCapture m_cvCap;

		public Form1()
		{
			InitializeComponent();
		}

		private void Form1_Load(object sender, EventArgs e)
		{

			//카메라 지정
			//제어판 기준인듯?
			m_cvCap = CvCapture.FromCamera(0);
			m_cvCap.FrameWidth = 320;
			m_cvCap.FrameHeight = 240;

			//타이머 설정
			timer1.Interval = 20;
			timer1.Enabled = true;
		}

		private void timer1_Tick(object sender, EventArgs e)
		{
			//카메라에서 프레임 가져온다.
			m_cvImg = m_cvCap.QueryFrame();
			//IplImage을 비트맵으로 전환
			pictureBox1.Image = m_cvImg.ToBitmap();
		}
	}
}

 

3. 테스트 하기

테스트를 하기 전에 웹캠이 잘 잡혀있는지 확인 하셔야합니다.

 

 

이렇게 웹캠이 잡혀있다면 프로젝트를 실행해 보겠습니다.

 

 

 

우와 잘나오네요~

 

 

마무리

분명 'OpenCVSharp'을 리눅스에서 사용 할 수 있는것 같은데 자료가 없습니다-_-;;

'OpenCvSharp.dll'만 추가하면 똑같이 동작한다는데 안됩니다-_-;

혹시나 해서 'monodevelop'로 작성해 봤지만 에러 나는건 마찬가지;;

 

그래서 몇가지 작업을 해주니 되긴 되네요;;;;

(이것도 포스팅할 예정입니다.)

원하는 모양으로 되는게 아니라서 걱정이긴한데.....

 

일단 확인좀 더해보고 해보고 'emgu cv'로 갈아 타야할것 같습니다,

 

 

OpenCV_CamTest.z01

 

OpenCV_CamTest.zip

 

 

 

 



 

 

댓글 작성

이름
패스워드
홈페이지
비밀글