IT정보공유/C#

C# OpenCVSharp 영상 및 이미지 표출시 사용하는 컨트롤 PictureBoxIpl

알지오™ 2019. 9. 16.

일전에 C# OpenCVSharp을 이용하여 RTSP 영상을 PictureBox에 표출하는 코드를 작성해 봤습니다.

[IT정보공유/C#] - C# OpenCV RTSP 네트워크 IP 카메라 영상 연결

 

C# OpenCV RTSP 네트워크 IP 카메라 영상 연결

예전에 MP4, AVI 등의 영상 파일을 재생 시키는 방법을 알아봤었는데요. 이번엔 RTSP 프로토콜을 이용하는 IP 카메라의 영상을 재생 시키는 방법에 대해서 알아보도록 하겠습니다. 예전과 동일하게 오픈소스인 Ope..

bigenergy.tistory.com

 

PictureBox.Image에는 Bitmap Type 밖에 할당이 되지 않기 때문에 OpenCVSharp에서 사용하는 Mat 타입을

비트맵으로 변환하여 PictureBox.Image 속성에 할당해 줘야합니다.

 

그런데, 무슨 문제인지 모르겠지만, OpenCvSharp.Extensions.BitmapConverter.ToBitmap() 함수가 잘 동작하다가

한번씩 에러가 발생하면서 스트리밍받은 영상을 정상적으로 출력 할 수 없었습니다.

아무리 구글링을 하고, 오류원인을 파악하려 해도, BitmapConverter.ToBitmap() 함수의 오류로 밖에 생각되지 않아

다른 방법이 없나 살펴보다가 방법을 찾았네요.

 

OpenCVSharp UserInterface PictureboxIpl

PictureboxIpl 이라는 컨트롤을 등록하여 해당 컨트롤의 Image 속성에 Mat Type 객체를 직접 할 당 할 수 있습니다.

위 사진과 같이 OpenCVSharp.UserInterface.dll 을 참조로 추가 하여 UI Control 을 추가해줘야 합니다.

처음에는 OpenCVSharp.UserInterface.PictureBoxIpl Control이 도구상자 등록되어 있지 않기 때문에

도구상자에서 팝업메뉴를 띄워 항목선택을 눌러 dll을 찾아 등록해야 합니다.

항목선택 메뉴를 눌러 도구 상자 항목 선택 다이알로그를 띄워준 후,

찾아보기 버튼을 눌러 OpenCvSharp.Userinterface.dll 파일이 있는 곳으로 이동 합니다.

해당 dll 파일을 찾았으면 선택하고, 열기를 눌러 PictureBoxIpl을 도구상자에 등록 시켜줍니다.

그 후에는 일반적인 컨트롤 처럼 도구상자에 PictureBoxIpl 이 등록되어 지고 

PictureBox 컨트롤 사용하듯 사용하면 됩니다.

 

단, PictureBoxIpl.ImageIpl 이라는 속성에 Mat Type 객체를 대입해야 합니다.

pictureBoxIpl1.ImageIpl = image; // 이렇게요. (자세한 소스는 지난번 포스팅 내용을 확인하세요.)

그러면 BitmapConverter.ToBitmap() 함수를 이용해 비트맵으로 형식 변경후에 PictureBox에 영상을 뿌리는게 아니라

이미지 변환없이 바로 pictureBoxIpl에 영상을 표출 할 수 있습니다.

 

댓글

💲 추천 글