VisionMaster和OpenCVSharp互转Mat和图像变量
ImageData img = new ImageData();GetImageValue("in0", ref img);ImageData imgOut = new ImageData();Mat srcImage = Mat.Zeros(img.Heigth, img.Width, MatType.CV_8UC1); Rect rect = new Rect(0, 0, 300, 300); if (img.PixelFormat == ImagePixelFormate.MONO8){
IntPtr grayPtr = Marshal.AllocHGlobal(img.Width * img.Heigth);
Marshal.Copy(img.Buffer, 0, grayPtr, img.Buffer.Length);
srcImage = new Mat(img.Heigth, img.Width, MatType.CV_8UC1, grayPtr);
Mat imageROI = new Mat(srcImage, rect);
Mat dstImage = Mat.Zeros(imageROI.Height, imageROI.Width, MatType.CV_8UC1);
Cv2.Threshold(imageROI,dstImage,10,120,ThresholdTypes.Otsu);
dstImage.CopyTo(imageROI); byte[] datab = new Byte[srcImage.Width * srcImage.Height];
srcImage.GetArray(0, 0, datab);
imgOut.Buffer = datab;
imgOut.Width = srcImage.Width;
imgOut.Heigth = srcImage.Height;
imgOut.PixelFormat = ImagePixelFormate.MONO8;
Marshal.FreeHGlobal(grayPtr);}SetImageValue("imageOut", imgOut);