public PhotoWindow() { InitializeComponent(); uint maxNumFaces = 1;//最多识别图片中几张脸 Detector = new Affdex.PhotoDetector(maxNumFaces, Affdex.FaceDetectorMode.SMALL_FACES); Detector.setImageListener(this); Detector.start(); byte[] bytes = FileHelper.FileToBytes(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg.jpg")); BitmapSource bitmapSource = ImageHelper.BytesToBitmapImage(bytes); var w = bitmapSource.Width; var h = bitmapSource.Height; var stride = bitmapSource.Format.BitsPerPixel * (int)w / 8; //计算Stride byte[] byteList = new byte[(int)h * stride]; bitmapSource.CopyPixels(byteList, stride, 0); Affdex.Frame frame = new Affdex.Frame((int)w, (int)h, byteList, Affdex.Frame.COLOR_FORMAT.BGRA); Detector.process(frame); }
public PhotoWindowAdvance() { InitializeComponent(); uint maxNumFaces = 1;//最多识别图片中几张脸 Detector = new Affdex.PhotoDetector(maxNumFaces, Affdex.FaceDetectorMode.SMALL_FACES); //Set location of the classifier data files, needed by the SDK Detector.setClassifierPath("C:\\Program Files\\Affectiva\\AffdexSDK\\data"); //String newPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "data"); //可以使用其它路径,但需要把Data复制过去 //Detector.setClassifierPath(newPath); //跟踪一些 我们预先设置的的分类器,比如开心,讨厌等等 Detector.setDetectAllEmotions(false); Detector.setDetectAllExpressions(false); Detector.setDetectAllEmojis(true); Detector.setDetectGender(true); Detector.setDetectGlasses(true); //以下为分类器 Detector.setDetectJoy(true); Detector.setDetectSadness(true); Detector.setDetectAnger(true); Detector.setDetectDisgust(true); Detector.setDetectSurprise(true); Detector.setDetectFear(true); Detector.setImageListener(this);//设置两个监听 Detector.setProcessStatusListener(this); Detector.start(); //Bitmap bmpt = (Bitmap)System.Drawing.Image.FromFile(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg.jpg")); //bmpt.Save(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg_1.png")); //================================================================================================================================== byte[] bytes = FileHelper.FileToBytes(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg.jpg")); BitmapSource bitmapSource = ImageHelper.BytesToBitmapImage(bytes); //var imageSrc = bitmapSource; //System.Windows.Media.Imaging.BitmapEncoder encoder = new System.Windows.Media.Imaging.PngBitmapEncoder(); //encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(imageSrc)); //using (var stream = new System.IO.FileStream(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, // "timg_new.png"), System.IO.FileMode.Create)) //{ // encoder.Save(stream); 导出 bitmapsource已经存储成功 证明图片是正常导入进了bitmapsource //} //================================================================================================================================== var w = bitmapSource.Width; var h = bitmapSource.Height; var stride = bitmapSource.Format.BitsPerPixel * (int)w / 8; //计算Stride byte[] byteList = new byte[(int)h * stride]; bitmapSource.CopyPixels(byteList, stride, 0); //调用CopyPixels Affdex.Frame frame = new Affdex.Frame((int)w, (int)h, byteList, Affdex.Frame.COLOR_FORMAT.BGRA); //================================================================================================================================== //var len = frame.getBGRByteArrayLength(); //byte[] imageData = frame.getBGRByteArray(); //Console.WriteLine($"onImageCapture帧的buf len{imageData.Length} len{len}"); //int width = frame.getWidth(); //int height = frame.getHeight(); //var ColorFormat = frame.getColorFormat(); //if (imageData != null && imageData.Length > 0) //{ // var _stride = (width * System.Windows.Media.PixelFormats.Rgb24.BitsPerPixel + 7) / 8;//_stride 1791 // Console.WriteLine($"_stride{_stride}"); // var imageSrc = System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96d, 96d, System.Windows.Media.PixelFormats.Bgr24, // null, imageData, _stride); // System.Windows.Media.Imaging.BitmapEncoder encoder = new System.Windows.Media.Imaging.PngBitmapEncoder(); // encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(imageSrc)); // using (var stream = // new System.IO.FileStream(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, // "我是分析前.png"), System.IO.FileMode.Create)) // { // encoder.Save(stream); // } //} //================================================================================================================================== Detector.process(frame); }