private async Task InitOCR(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_ocr == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.xml", _modelFolderName, "B5B649B9566F5CF352554ACFFD44207F4AECEE1DA767F4B69F46060A102623FA"); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.bin", _modelFolderName, "685934518A930CC55D023A53AC2D5E47BBE81B80828354D8318DE6DC3AD5CFBA"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); _ocr = DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _ocr.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _ocr.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } }
public static void DownloadUpdateA(string url, System.Net.DownloadProgressChangedEventHandler onprogr, System.ComponentModel.AsyncCompletedEventHandler oncomplete) { try { if (client == null) { if (System.IO.File.Exists(installer)) { System.IO.File.Delete(installer); } client = new System.Net.WebClient(); client.DownloadProgressChanged += onprogr; client.DownloadFileCompleted += disposeclient; client.DownloadFileCompleted += oncomplete; client.DownloadFileAsync(new System.Uri(url), installer); } else { oncomplete(null, new System.ComponentModel.AsyncCompletedEventArgs(new InvalidOperationException("Download already in progress!"), true, null)); } } catch (Exception ex) { oncomplete(null, new System.ComponentModel.AsyncCompletedEventArgs(new InvalidOperationException("Error downloading!"), true, null)); } }
private async Task InitVehicleAttributesRecognizer(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_vehicleAttrRecognizer == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.xml", _modelFolderName, "9D1E877B153699CAF4547D08BFF7FE268F65B663441A42B929924B8D95DACDBB"); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.bin", _modelFolderName, "492520E55F452223E767D54227D6EF6B60B0C1752DD7B9D747BE65D57B685A0E"); manager.OnDownloadProgressChanged += onDownloadProgressChanged; await manager.Download(); _vehicleAttrRecognizer = DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _vehicleAttrRecognizer.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _vehicleAttrRecognizer.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } }
private async Task InitLicensePlateDetector(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_vehicleLicensePlateDetector == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.xml", _modelFolderName); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.bin", _modelFolderName); manager.OnDownloadProgressChanged += onDownloadProgressChanged; await manager.Download(); _vehicleLicensePlateDetector = DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _vehicleLicensePlateDetector.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _vehicleLicensePlateDetector.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } }
/// <summary> /// Download and initialize the facial landmark detector /// </summary> /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param> /// <returns>Async task</returns> public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_facemark == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://raw.githubusercontent.com/kurnianggoro/GSOC2017/master/data/lbfmodel.yaml", "facemark", "70DD8B1657C42D1595D6BD13D97D932877B3BED54A95D3C4733A0F740D1FD66B"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); if (manager.AllFilesDownloaded) { using (FacemarkLBFParams facemarkParam = new CV.Face.FacemarkLBFParams()) { _facemark = new FacemarkLBF(facemarkParam); _facemark.LoadModel(manager.Files[0].LocalFile); } } } }
private async Task InitTextDetector(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_textDetector == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/emgucv/models/raw/master/scene_text/DB_TD500_resnet50.onnx", _modelFolderName, "7B83A5E7AFBBD9D70313C902D188FF328656510DBF57D66A711E07DFDB81DF20"); manager.OnDownloadProgressChanged += onDownloadProgressChanged; await manager.Download(); if (manager.AllFilesDownloaded) { _textDetector = new TextDetectionModel_DB(manager.Files[0].LocalFile); _textDetector.BinaryThreshold = 0.3f; _textDetector.PolygonThreshold = 0.5f; _textDetector.MaxCandidates = 200; _textDetector.UnclipRatio = 2.0; _textDetector.SetInputScale(1.0 / 255.0); _textDetector.SetInputSize(new Size(736, 736)); _textDetector.SetInputMean(new MCvScalar(122.67891434, 116.66876762, 104.00698793)); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _vehicleAttrRecognizer.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _vehicleAttrRecognizer.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } } }
/// <summary> /// Download and initialize the vehicle detector, the license plate detector and OCR. /// </summary> /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param> /// <returns>Async task</returns> public async Task Init( System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, Object initOptions = null) { Dnn.Backend backend = Dnn.Backend.OpenCV; Dnn.Target target = Target.Cpu; if (initOptions != null && ((initOptions as String) != null)) { String[] backendOptions = (initOptions as String).Split(';'); if (backendOptions.Length == 2) { String backendStr = backendOptions[0]; String targetStr = backendOptions[1]; if (!(Enum.TryParse(backendStr, true, out backend) && Enum.TryParse(targetStr, true, out target))) { //If failed to part either backend or target, use the following default backend = Dnn.Backend.OpenCV; target = Target.Cpu; } } } await InitLicensePlateDetector(backend, target, onDownloadProgressChanged); await InitVehicleAttributesRecognizer(backend, target, onDownloadProgressChanged); await InitOCR(backend, target, onDownloadProgressChanged); }
private static void DownloadHelper( DownloadableFile[] downloadableFiles, int retry = 1, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, System.ComponentModel.AsyncCompletedEventHandler onDownloadFileCompleted = null) { if (downloadableFiles == null || downloadableFiles.Length == 0) { if (onDownloadFileCompleted != null) { onDownloadFileCompleted(null, null); } } else if (downloadableFiles.Length == 1) { DownloadHelper(downloadableFiles[0], retry, onDownloadProgressChanged, onDownloadFileCompleted); } else { DownloadableFile currentFile = downloadableFiles[0]; DownloadableFile[] remainingFiles = new DownloadableFile[downloadableFiles.Length - 1]; Array.Copy(downloadableFiles, 1, remainingFiles, 0, remainingFiles.Length); DownloadHelper(currentFile, retry, onDownloadProgressChanged, (object sender, System.ComponentModel.AsyncCompletedEventArgs e) => { DownloadHelper(remainingFiles, retry, onDownloadProgressChanged, onDownloadFileCompleted); } ); } }
InitTesseract(String lang, OcrEngineMode mode, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_ocr == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile(Emgu.CV.OCR.Tesseract.GetLangFileUrl(lang), _modelFolderName); manager.AddFile(Emgu.CV.OCR.Tesseract.GetLangFileUrl("osd"), _modelFolderName); //script orientation detection if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(manager.Download()); #else await manager.Download(); #endif if (manager.AllFilesDownloaded) { _lang = lang; _mode = mode; FileInfo fi = new FileInfo(manager.Files[0].LocalFile); _ocr = new Tesseract(fi.DirectoryName, _lang, _mode); } } }
private static async Task Download( DownloadableFile[] files, int retry = 1, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { await DownloadHelperMultiple(files, retry, onDownloadProgressChanged); }
/// <summary> /// Download and initialize the DNN face detector /// </summary> /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param> /// <returns>Async task</returns> public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_faceDetectorNet == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/opencv/opencv_3rdparty/raw/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel", _modelFolderName, "2A56A11A57A4A295956B0660B4A3D76BBDCA2206C4961CEA8EFE7D95C7CB2F2D"); manager.AddFile( "https://raw.githubusercontent.com/opencv/opencv/4.0.1/samples/dnn/face_detector/deploy.prototxt", _modelFolderName, "F62621CAC923D6F37BD669298C428BB7EE72233B5F8C3389BB893E35EBBCF795"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); if (manager.AllFilesDownloaded) { _faceDetectorNet = DnnInvoke.ReadNetFromCaffe(manager.Files[1].LocalFile, manager.Files[0].LocalFile); if (Emgu.CV.Cuda.CudaInvoke.HasCuda) { _faceDetectorNet.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); _faceDetectorNet.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); } } } }
private static async Task <byte[]> DownloadKoobooZip(System.Net.DownloadProgressChangedEventHandler downloadProgressChanged) { string serverUrl = AppSettings.ConvertApiUrl + "/_api/upgrade/DownloadUpgradePackage"; var client = new System.Net.WebClient(); if (downloadProgressChanged != null) { client.DownloadProgressChanged += downloadProgressChanged; } Uri uri = new Uri(serverUrl); var bytes = await client.DownloadDataTaskAsync(uri); if (client.ResponseHeaders.AllKeys.Contains("filehash")) { var hash = client.ResponseHeaders["filehash"]; if (hash != null) { Guid hashguid = default(Guid); if (Guid.TryParse(hash, out hashguid)) { var newhash = Lib.Security.Hash.ComputeGuid(bytes); if (hashguid == newhash) { return(bytes); } } } } return(null); }
private async Task InitVehicleAttributesRecognizer(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_vehicleAttrRecognizer == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://download.01.org/opencv/2020/openvinotoolkit/2020.4/open_model_zoo/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.xml", _modelFolderName); manager.AddFile( "https://download.01.org/opencv/2020/openvinotoolkit/2020.4/open_model_zoo/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.bin", _modelFolderName); manager.OnDownloadProgressChanged += onDownloadProgressChanged; await manager.Download(); _vehicleAttrRecognizer = DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _vehicleAttrRecognizer.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _vehicleAttrRecognizer.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } }
public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_faceDetector == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/opencv/opencv_3rdparty/raw/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel", _modelFolderName); manager.AddFile( "https://raw.githubusercontent.com/opencv/opencv/4.0.1/samples/dnn/face_detector/deploy.prototxt", _modelFolderName); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); _faceDetector = DnnInvoke.ReadNetFromCaffe(manager.Files[1].LocalFile, manager.Files[0].LocalFile); if (Emgu.CV.Cuda.CudaInvoke.HasCuda) { _faceDetector.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); _faceDetector.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); } } }
/// <summary> /// Download and initialize the vehicle detector, the license plate detector and OCR. /// </summary> /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param> /// <param name="initOptions">Initialization options. None supported at the moment, any value passed will be ignored.</param> /// <returns>Async task</returns> public async Task Init( System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, Object initOptions = null) { await InitTextDetector(onDownloadProgressChanged); await InitTextRecognizer(onDownloadProgressChanged); await InitFreetype(onDownloadProgressChanged); }
private async Task InitFreetype(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_freetype == null) { _freetype = new FreetypeNotoSansCJK(_modelFolderName); await _freetype.Init(onDownloadProgressChanged); } }
private static void Download( DownloadableFile[] files, int retry = 1, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, System.ComponentModel.AsyncCompletedEventHandler onDownloadFileCompleted = null) { DownloadHelper(files, retry, onDownloadProgressChanged, onDownloadFileCompleted); }
Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, Object initOptions = null) { #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return (#else await #endif InitTesseract("eng", OcrEngineMode.TesseractOnly, onDownloadProgressChanged)); }
private static async Task DownloadHelper( DownloadableFile downloadableFile, int retry = 1, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null ) { if (downloadableFile.Url == null) { return; } //uncomment the following line to force re-download every time. //File.Delete(downloadableFile.LocalFile); if (!File.Exists(downloadableFile.LocalFile) || new FileInfo(downloadableFile.LocalFile).Length == 0) { try { //Download the file Trace.WriteLine("downloading file from:" + downloadableFile.Url + " to: " + downloadableFile.LocalFile); System.Net.WebClient downloadClient = new System.Net.WebClient(); if (onDownloadProgressChanged != null) { downloadClient.DownloadProgressChanged += onDownloadProgressChanged; } FileInfo fi = new FileInfo(downloadableFile.LocalFile); if (!fi.Directory.Exists) { fi.Directory.Create(); } await downloadClient.DownloadFileTaskAsync(new Uri(downloadableFile.Url), downloadableFile.LocalFile); } catch (Exception e) { if (File.Exists(downloadableFile.LocalFile)) { //The downloaded file may be corrupted, should delete it File.Delete(downloadableFile.LocalFile); } if (retry > 0) { await DownloadHelper(downloadableFile, retry - 1); } else { #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE UnityEngine.Debug.Log(e.StackTrace); #else Trace.WriteLine(e); #endif throw; } } } }
public bool DownLoad(string SRC, string SaveFileFullName, System.Net.DownloadProgressChangedEventHandler client_DownloadProgressChanged, AsyncCompletedEventHandler client_DownloadFileCompleted) { SRC = APIHellper.ConstConfig.APIURL.Replace("/api", "") + SRC; APIHellper apiHelper = new APIHellper(); apiHelper.DownloadFileAsync(SRC, SaveFileFullName, client_DownloadProgressChanged, client_DownloadFileCompleted); return(true); }
private async Task InitOCR(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_ocr == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.xml", _modelFolderName, "B5B649B9566F5CF352554ACFFD44207F4AECEE1DA767F4B69F46060A102623FA"); manager.AddFile( "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.bin", _modelFolderName, "685934518A930CC55D023A53AC2D5E47BBE81B80828354D8318DE6DC3AD5CFBA"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); _ocr = DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile); using (Mat seqInd = new Mat( new Size(1, 88), DepthType.Cv32F, 1)) { if (seqInd.Depth == DepthType.Cv32F) { float[] seqIndValues = new float[seqInd.Width * seqInd.Height]; for (int j = 1; j < seqIndValues.Length; j++) { seqIndValues[j] = 1.0f; } seqIndValues[0] = 0.0f; seqInd.SetTo(seqIndValues); } _ocr.SetInput(seqInd, "seq_ind"); } /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _ocr.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _ocr.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } }
private static async Task DownloadHelper( DownloadableFile downloadableFile, int retry = 1, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null ) { if (downloadableFile.Url == null) { return; } //uncomment the following line to force re-download every time. //File.Delete(downloadableFile.LocalFile); if (!downloadableFile.IsLocalFileValid) { try { //Download the file Trace.WriteLine("downloading file from:" + downloadableFile.Url + " to: " + downloadableFile.LocalFile); System.Net.WebClient downloadClient = new System.Net.WebClient(); if (onDownloadProgressChanged != null) { downloadClient.DownloadProgressChanged += onDownloadProgressChanged; } FileInfo fi = new FileInfo(downloadableFile.LocalFile); if (!fi.Directory.Exists) { fi.Directory.Create(); } await downloadClient.DownloadFileTaskAsync(new Uri(downloadableFile.Url), downloadableFile.LocalFile); } catch (Exception e) { if (!downloadableFile.IsLocalFileValid) { //The downloaded file may be corrupted, should delete it File.Delete(downloadableFile.LocalFile); } if (retry > 0) { await DownloadHelper(downloadableFile, retry - 1); } else { Trace.WriteLine(e); throw; } } } }
/// <summary> /// Download and initialize the Mask Rcnn model /// </summary> /// <param name="onDownloadProgressChanged">Call back method during download</param> /// <returns>Asyn task</returns> public async Task Init( System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_maskRcnnDetector == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/emgucv/models/raw/master/mask_rcnn_inception_v2_coco_2018_01_28/frozen_inference_graph.pb", _modelFolderName, "AC9B51CDE227B24D20030042E6C1E29AF75668F509E51AA84ED686787CCCC309"); manager.AddFile( "https://github.com/opencv/opencv_extra/raw/4.1.0/testdata/dnn/mask_rcnn_inception_v2_coco_2018_01_28.pbtxt", _modelFolderName, "090923144D81B2E442093F965BE27ECCDA11CE5F781EAF1C7EC76932CE99641E"); manager.AddFile( "https://github.com/emgucv/models/raw/master/mask_rcnn_inception_v2_coco_2018_01_28/coco-labels-paper.txt", _modelFolderName, "8925173E1B0AABFAEFDA27DE2BB908233BB8FB6E7582323D72988E4BE15A5F0B"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); if (manager.AllFilesDownloaded) { _maskRcnnDetector = Emgu.CV.Dnn.DnnInvoke.ReadNetFromTensorflow(manager.Files[0].LocalFile, manager.Files[1].LocalFile); _labels = File.ReadAllLines(manager.Files[2].LocalFile); //prefer cuda backend if available foreach (BackendTargetPair p in DnnInvoke.AvailableBackends) { if (p.Backend == Dnn.Backend.Cuda && p.Target == Target.Cuda) { _maskRcnnDetector.SetPreferableBackend(Dnn.Backend.Cuda); _maskRcnnDetector.SetPreferableTarget(Target.Cuda); break; } } _colors = new MCvScalar[_labels.Length]; Random r = new Random(12345); for (int i = 0; i < _colors.Length; i++) { _colors[i] = new MCvScalar(r.Next(256), r.Next(256), r.Next(256)); } } } }
private async Task InitFreetype(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) #endif { if (_freetype == null) { _freetype = new FreetypeNotoSansCJK(_modelFolderName); #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(_freetype.Init(onDownloadProgressChanged)); #else await _freetype.Init(onDownloadProgressChanged); #endif } }
public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged, Object initOptions) #endif { if (_models != null) { foreach (var model in _models) { #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(model.Init(onDownloadProgressChanged, initOptions)); #else await model.Init(onDownloadProgressChanged, initOptions); #endif } } }
public async Task Init(YoloVersion version = YoloVersion.YoloV3, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { if (_yoloDetector == null) { FileDownloadManager manager = new FileDownloadManager(); if (version == YoloVersion.YoloV3Spp) { manager.AddFile( "https://pjreddie.com/media/files/yolov3-spp.weights", _modelFolderName); manager.AddFile( "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-spp.cfg", _modelFolderName); } else if (version == YoloVersion.YoloV3) { manager.AddFile( "https://pjreddie.com/media/files/yolov3.weights", _modelFolderName); manager.AddFile( "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3.cfg", _modelFolderName); } else if (version == YoloVersion.YoloV3Tiny) { manager.AddFile( "https://pjreddie.com/media/files/yolov3-tiny.weights", _modelFolderName); manager.AddFile( "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-tiny.cfg", _modelFolderName); } manager.AddFile("https://github.com/pjreddie/darknet/raw/master/data/coco.names", _modelFolderName); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } await manager.Download(); _yoloDetector = DnnInvoke.ReadNetFromDarknet(manager.Files[1].LocalFile, manager.Files[0].LocalFile); _labels = File.ReadAllLines(manager.Files[2].LocalFile); } }
/// <summary> /// Download and initialize the freetype object /// </summary> /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param> /// <returns>Async task</returns> public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/emgucv/emgucv/raw/4.4.0/Emgu.CV.Test/NotoSansCJK-Regular.ttc", _modelFolderName, "E3C629CB9F416E2E57CFDFEE7573D5CAC3A06A681C105EC081AB9707C1F147E8"); manager.OnDownloadProgressChanged += onDownloadProgressChanged; await manager.Download(); if (manager.AllFilesDownloaded) { LoadFontData(manager.Files[0].LocalFile, 0); } }
public async Task Init( System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null, Object initOptions = null) #endif { #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(InitTextDetector(onDownloadProgressChanged)); yield return(InitTextRecognizer(onDownloadProgressChanged)); yield return(InitFreetype(onDownloadProgressChanged)); #else await InitTextDetector(onDownloadProgressChanged); await InitTextRecognizer(onDownloadProgressChanged); await InitFreetype(onDownloadProgressChanged); #endif }
public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) #endif { if (_faceDetectionModel == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/opencv/opencv_3rdparty/raw/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel", _modelFolderName, "2A56A11A57A4A295956B0660B4A3D76BBDCA2206C4961CEA8EFE7D95C7CB2F2D"); manager.AddFile( "https://raw.githubusercontent.com/opencv/opencv/4.0.1/samples/dnn/face_detector/deploy.prototxt", _modelFolderName, "F62621CAC923D6F37BD669298C428BB7EE72233B5F8C3389BB893E35EBBCF795"); if (onDownloadProgressChanged != null) { manager.OnDownloadProgressChanged += onDownloadProgressChanged; } #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(manager.Download()); #else await manager.Download(); #endif if (manager.AllFilesDownloaded) { _faceDetectionModel = new DetectionModel(manager.Files[0].LocalFile, manager.Files[1].LocalFile); _faceDetectionModel.SetInputMean(new MCvScalar(104, 177, 123)); _faceDetectionModel.SetInputSize(new Size(300, 300)); _faceDetectionModel.SetInputSwapRB(false); _faceDetectionModel.SetInputScale(1.0); _faceDetectionModel.SetInputCrop(false); #if !(UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL) if (Emgu.CV.Cuda.CudaInvoke.HasCuda) { _faceDetectionModel.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); _faceDetectionModel.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); } #endif } } }
private async Task InitTextRecognizer(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null) #endif { if (_ocr == null) { FileDownloadManager manager = new FileDownloadManager(); manager.AddFile( "https://github.com/emgucv/models/raw/master/scene_text/crnn_cs_CN.onnx", _modelFolderName, "C760BF82D684B87DFABB288E6C0F92D41A8CD6C1780661CA2C3CD10C2065A9BA"); manager.AddFile( "https://github.com/emgucv/models/raw/master/scene_text/alphabet_3944.txt", _modelFolderName, "8027C9832D86764FECCD9BDD8974829C86994617E5787F178ED97DB2BDA1481A"); manager.OnDownloadProgressChanged += onDownloadProgressChanged; #if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL yield return(manager.Download()); #else await manager.Download(); #endif if (manager.AllFilesDownloaded) { _ocr = new TextRecognitionModel(manager.Files[0].LocalFile); _ocr.DecodeType = "CTC-greedy"; String[] vocab = File.ReadAllLines(manager.Files[1].LocalFile); _ocr.Vocabulary = vocab; _ocr.SetInputScale(1.0 / 127.5); _ocr.SetInputMean(new MCvScalar(127.5, 127.5, 127.5)); _ocr.SetInputSize(new Size(100, 32)); /* * if (Emgu.CV.Cuda.CudaInvoke.HasCuda) * { * _vehicleAttrRecognizer.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda); * _vehicleAttrRecognizer.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda); * }*/ } } }