본문 바로가기

자료

[OpenCvSharp] Mat to Bitmap

728x90

pictureBox를 사용해야 하는데 Mat을 그대로 사용할 수가 없다.

Bitmap 으로 변환을 해주어야 하는데 고맙게도 함수가 있더이다.

 

참고 : http://blog.naver.com/PostView.nhn?blogId=nuren1&logNo=220727174546&redirect=Dlog&widgetTypeCall=true

 

참고사이트가.. 음.. 참고가 아니라 그냥 전부이다. 

 

 

Mat To Bitmap

 

Mat mat = new Mat("test.jpg", ImreadModes.Color);

// Mat mat = Cv2.ImRead("test.jpg", LoadMode.GrayScale);

 

Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);

생각보다 시간이 많이 걸린다는 점..

Mat을 생성할 때 ImRead함수를 사용할 수 있다.

 

Bitmap To Mat

 

Bitmap bitmap = new Bitmap("foobar.jpg");

 

Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);

이거부터 안해봤다. 아직 사용할 일이 없어서.

후기는 댓글로..(남길 수 있나 ?)

 

Mat to byte[]

 

Mat mat = new Mat("foobar.jpg", ImreadModes.Color);

 

byte[] bytes1 = mat.ToBytes(".png");

 

byte[] bytes2;

Cv2.ImEncode(".jpg", mat, out bytes2);

 

byte[] to Mat

 

byte[] imageData = System.IO.File.ReadAllBytes("foobar.jpg");

 

Mat colorMat = Mat.FromImageData(imageData, ImreadModes.Color);

Mat grayscaleMat = Mat.FromImageData(imageData, ImreadModes.GrayScale);

 

Mat alt = Cv2.ImDecode(imageData, ImreadModes.GrayScale);

 

 

참고 사이트에 있긴 하지만.. 혹시나 사라질까봐 정리를 합니다.

728x90