2
표제. System.Drawing.Image를 Emgu.CV.Mat로 변환하는 문제가 있습니다. Drawing.Image에서 CV.Image로 변환하려고 시도했지만 예외가 계속 발생했습니다.System.Drawing.Image to Emgu.CV.Mat
다른 해결책이 있습니까? 도움이되는 렌더링은 친절하게 평가됩니다.
표제. System.Drawing.Image를 Emgu.CV.Mat로 변환하는 문제가 있습니다. Drawing.Image에서 CV.Image로 변환하려고 시도했지만 예외가 계속 발생했습니다.System.Drawing.Image to Emgu.CV.Mat
다른 해결책이 있습니까? 도움이되는 렌더링은 친절하게 평가됩니다.
OpenCV 또는 EmguCV IMage에는 Mat 헤더가 있습니다. 내가 발견 한 트릭은 System.Drawing.Image를 Image <>으로 가져 오는 것입니다. EmguCV 3.1을 사용하는 경우 x64 용으로 컴파일해야합니다. 이 도움이
private Mat GetMatFromSDImage(System.Drawing.Image image)
{
int stride = 0;
Bitmap bmp = new Bitmap(image);
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
System.Drawing.Imaging.PixelFormat pf = bmp.PixelFormat;
if (pf == System.Drawing.Imaging.PixelFormat.Format32bppArgb)
{
stride = bmp.Width * 4;
}
else
{
stride = bmp.Width * 3;
}
Image<Bgra, byte> cvImage = new Image<Bgra, byte>(bmp.Width, bmp.Height, stride, (IntPtr)bmpData.Scan0);
bmp.UnlockBits(bmpData);
return cvImage.Mat;
}
희망 :
는 여기에 매트 개체를 얻을 수있는 간단한 방법입니다! 더그
감사합니다. AeroClassics! 그것은 매력처럼 작동합니다. –
대단히 환영합니다! 다행히 도울 수있어. – AeroClassics
원하면 대답으로 표시하십시오. – AeroClassics