float[] load_image_in_channels_first_format(string path, int width, int height) { var src = OpenCvSharp.Cv2.ImRead(path); OpenCvSharp.Cv2.Resize(src, src, new OpenCvSharp.Size(width, height)); var dst_bgr = new OpenCvSharp.MatOfPoint3f(); src.ConvertTo(dst_bgr, OpenCvSharp.MatType.CV_32FC3); int numPixels = width * height; var result = new float[3 * numPixels]; var buffer = dst_bgr.ToArray(); var pos = 0; for (int row = 0; row < height; row++) { for (int column = 0; column < width; column++, pos++) { result[pos] = buffer[pos].X; result[pos + numPixels] = buffer[pos].Y; result[pos + 2 * numPixels] = buffer[pos].Z; } } return(result); }
void testing() { var app = new System.Windows.Application(); var p1 = new PlotWindow(cat_filename); var p2 = new PlotWindow(cat_filename); p1.Show(); Console.WriteLine("step 1"); p2.Show(); Console.WriteLine("step 2"); // read, and resize an OpenCV matrix var src = OpenCvSharp.Cv2.ImRead(cat_filename); OpenCvSharp.Cv2.Resize(src, src, new OpenCvSharp.Size(150, 150)); // Convert to 3 32-bit (float) channels format var dst_bgr = new OpenCvSharp.MatOfPoint3f(); src.ConvertTo(dst_bgr, OpenCvSharp.MatType.CV_32FC3); // let's remove all the blue, green var buffer = dst_bgr.ToArray(); for (int i = 0; i < buffer.Length; i++) { buffer[i].X = 0; buffer[i].Y = 0; } dst_bgr = new OpenCvSharp.MatOfPoint3f(150, 150, buffer); // let's convert it back to 3 8-bit channels var recovered_src = new OpenCvSharp.Mat(); dst_bgr.ConvertTo(recovered_src, OpenCvSharp.MatType.CV_8UC3); // display an OpenCV matrix -- works as long as the underlying format is OpenCvSharp.MatType.CV_8UC3 new PlotWindow(recovered_src, "from opencv").Show(); app.Run(); }