示例#1
0
        public static void DetectAll(string folderPath, string[] cascadesPath, string savePath)
        {
            List <SignsHaarCascade> cascadesList = new List <SignsHaarCascade>();
            List <ImageFolder>      foldersList  = new List <ImageFolder>();

            foreach (string casPath in cascadesPath)
            {
                cascadesList.Add(new SignsHaarCascade(casPath));
            }
            ImageFolder f = new ImageFolder();

            f.Load(folderPath);
            int c = 0;

            foreach (string image_path in f.GetAll())
            {
                Mat img = new Image <Bgr, byte>(image_path).Mat;
                foreach (SignsHaarCascade cascade in cascadesList)
                {
                    Console.WriteLine(f.GetPath());
                    Console.WriteLine(c++);
                    List <Mat> list          = cascade.detectAll(img, 1.1, 4);
                    var        n             = new DirectoryInfo(f.GetPath()).Name;
                    var        newFolderPath = Path.Combine(savePath, n.ToString());
                    var        imageName     = Path.GetFileNameWithoutExtension(image_path);

                    for (int i = 0; i < list.Count; i++)
                    {
                        list[i].Save(newFolderPath + "_" + imageName + "_" + i + ".jpg");
                    }
                }
            }
        }
示例#2
0
        /**
         * \brief	Allows the user to start a new project.
         *
         * \param	N/A
         *
         * \return	Returns true if the user confirmed that they want to start a new project.
         *			Otherwise false is returned.
         */
        public static bool NewProject()
        {
            SaveFileDialog dialog = new SaveFileDialog();

            dialog.Filter = "Handshake Tool files (*.hst)|*.hst";

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                // assign project folder
                File.Create(dialog.FileName);
                ProjectFolder = new DirectoryInfo(
                    dialog.FileName.Remove(dialog.FileName.LastIndexOf('.')));

                // ensure project & images folders exist
                if (!ProjectFolder.Exists)
                {
                    ProjectFolder.Create();
                }
                if (!ImageFolder.Exists)
                {
                    ImageFolder.Create();
                }
                return(true);
            }
            return(false);
        }
示例#3
0
        private static string GetServerImagePath(string root, ImageFolder folder)
        {
            string fullPath;

            switch (folder)
            {
            case ImageFolder.Temp:
                fullPath = root + "\\temp";
                break;

            case ImageFolder.Backup:
                fullPath = root + "\\backup";
                break;

            case ImageFolder.Match:
                fullPath = root + "\\matches";
                break;

            case ImageFolder.Players:
            default:
                fullPath = root + "\\players";
                break;
            }

            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            return(fullPath);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ImageFolder imageFolder = db.ImageFolders.Find(id);

            db.ImageFolders.Remove(imageFolder);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
    /// <summary>
    /// Returns path of the image which is used for the shopping cart selector button.
    /// </summary>
    /// <param name="imageButton">Image name or image relative path.</param>
    private string GetImageButtonUrl(string imageButton)
    {
        if (imageButton.StartsWithCSafe("~"))
        {
            return(UrlResolver.ResolveUrl(imageButton));
        }

        return(ImageFolder.TrimEnd('/') + "/" + imageButton);
    }
 public ActionResult Edit([Bind(Include = "Id,Name")] ImageFolder imageFolder)
 {
     if (ModelState.IsValid)
     {
         db.Entry(imageFolder).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(imageFolder));
 }
        public ActionResult Create([Bind(Include = "Id,Name")] ImageFolder imageFolder)
        {
            if (ModelState.IsValid)
            {
                db.ImageFolders.Add(imageFolder);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(imageFolder));
        }
示例#8
0
        private static string GetServerImagePath(ImageFolder folder)
        {
            string root;

#if DEBUG
            root = Properties.Settings.Default.PublicImageFolder;
#else
            root = HttpContext.Current.Server.MapPath("~/img");
#endif

            var fullPath = GetServerImagePath(root, folder);
            return(fullPath);
        }
示例#9
0
        public static bool Save(ImageFolder sub_folder, string filename, byte[] data)
        {
            IFolder rootFolder = Plugin.NetStandardStorage.CrossStorage.FileSystem.LocalStorage;
            IFolder folder     = rootFolder.CreateFolder(sub_folder.ToString(), CreationCollisionOption.OpenIfExists);
            IFile   file       = folder.CreateFile(filename, CreationCollisionOption.ReplaceExisting);

            using (Stream stream = file.Open(FileAccess.ReadWrite))
            {
                stream.Write(data, 0, data.Length);
            }

            return(true);
        }
示例#10
0
        private static List <byte[]> LoadImages(string path, out ImageFolder fold, int maxItem = -1)
        {
            var result = new List <byte[]>();
            var f      = new ImageFolder();

            f.Load(path);
            foreach (string imgpath in f.GetAll())
            {
                result.Add(new Image <Gray, byte>(imgpath).Bytes);
            }
            fold = f;
            return(result);
        }
        // GET: ImageFolders/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ImageFolder imageFolder = db.ImageFolders.Find(id);

            if (imageFolder == null)
            {
                return(HttpNotFound());
            }
            return(View(imageFolder));
        }
示例#12
0
        public static async Task <bool> HaveAllImages()
        {
            var imageFiles = ImageFolder.CreateFileQuery();
            // Should have at least 95% of pages; of more than that it's not efficient to download the ZIP
            var pageCount = await imageFiles.GetItemCountAsync();

            if (pageCount >= 600)
            {
                // ideally, we should loop for each page and ensure
                // all pages are there, but this will do for now.
                return(true);
            }

            return(false);
        }
        private ImageFolder EnsureImageFolderExists(string folderName)
        {
            var folder = GetImageFolder(folderName);

            if (folder == null)
            {
                folder = new ImageFolder
                {
                    FolderName = folderName
                };

                _folderRepository.Add(folder);
            }
            return(folder);
        }
示例#14
0
        private static List <int> LoadLabels(string path, ImageFolder f, int maxItem = -1)
        {
            var    result   = new List <int>();
            var    name     = "labels.txt";
            var    filePath = Path.Combine(path, name);
            string labels   = "";

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            if (!File.Exists(filePath))
            {
                foreach (string imgpath in f.GetAll())
                {
                    string n = Path.GetFileName(imgpath);

                    n = n.Substring(n.IndexOf('_') + 1, n.IndexOf('.') - n.IndexOf('_') - 1);

                    labels += " " + n;
                }
                File.WriteAllText(filePath, labels);
            }
            labels = File.ReadAllText(filePath, Encoding.UTF8) + " ";
            int    c   = 0;
            int    i   = 0;
            string tmp = "";

            do
            {
                if ((labels[i] != ' '))
                {
                    tmp += labels[i];
                }
                else
                {
                    if (tmp.Length > 0)
                    {
                        result.Add(Int32.Parse(tmp));
                        tmp = "";
                        c++;
                    }
                }
                i++;
            } while (i < labels.Length);
            return(result);
        }
        private ImageFolder EnsureImageFolderExistsWithParent(string folderName, Guid parentFolderId)
        {
            var folder = _folderRepository.GetSingle(
                x => x.FolderName.Equals(folderName, StringComparison.CurrentCultureIgnoreCase) &&
                x.ParentFolderId != null && x.ParentFolderId.Equals(parentFolderId));

            if (folder == null)
            {
                folder = new ImageFolder
                {
                    FolderName     = folderName,
                    ParentFolderId = parentFolderId
                };

                _folderRepository.Add(folder);
            }
            return(folder);
        }
示例#16
0
        public static byte[] Load(ImageFolder sub_folder, string filename)
        {
            IFolder rootFolder = Plugin.NetStandardStorage.CrossStorage.FileSystem.LocalStorage;
            IFolder folder     = rootFolder.CreateFolder(sub_folder.ToString(), CreationCollisionOption.OpenIfExists);

            if (!folder.CheckFileExists(folder.FullPath + "/" + filename))
            {
                return(null);
            }

            IFile file = folder.GetFile(filename);

            using (Stream stream = file.Open(FileAccess.ReadWrite))
            {
                long   length       = stream.Length;
                byte[] streamBuffer = new byte[length];
                stream.Read(streamBuffer, 0, (int)length);
                return(streamBuffer);
            }
        }
示例#17
0
        public static KeyValuePair <string, FileInfo> BuildImageInfo(ImageFolder folder, string subFolder, string oriFileName, bool isTemp)
        {
            oriFileName = oriFileName.Split('/').Last();
            var index    = oriFileName.LastIndexOf(".");
            var fileName = oriFileName.Substring(0, index);

            fileName = HttpUtility.UrlDecode(fileName);
            var dateParts = DateTime.Now.ToString(isTemp ? "yyyy/MM/dd" : "yyyy/MM");

            if (!string.IsNullOrWhiteSpace(subFolder))
            {
                dateParts = PathManager.UrlCombine(subFolder, dateParts);
            }
            var      extension = oriFileName.Substring(index + 1);
            FileInfo fileInfo;
            int      count = 0;
            string   filePath;

            do
            {
                string extra = null;
                if (count > 0)
                {
                    extra = "({0})".FormatWith(count);
                }
                if (isTemp)
                {
                    filePath = "temp/{0}/{1}{3}.{2}".FormatWith(dateParts, fileName, extension, extra);
                }
                else
                {
                    filePath = "data/{4}/{0}/{1}{3}.{2}".FormatWith(dateParts, fileName, extension, extra, folder);
                }
                fileInfo = new FileInfo(PathManager.PathCombine(filePath.ToImageUrl(false)).FromRoot());
                count++;
            } while (fileInfo.Exists);

            return(new KeyValuePair <string, FileInfo>(filePath, fileInfo));
        }
        public static IEnumerable <PhotoData> Connect(ImageFolder f, List <MovementPoint> pointsList, int timeStepMilliseconds)
        {
            var pointsDates    = pointsList.Select(p => p.Date);
            var firstPhotoDate = pointsDates.Min();
            var lastPhotoDate  = pointsDates.Max();

            List <Photo> photos = new List <Photo>();

            for (int i = 0; i < f.GetCount(); i++)
            {
                photos.Add(new Photo {
                    Number = i, FileName = f.GetImg(i)
                });
            }

            return(photos.Select(photo =>
            {
                var photoDateTime = firstPhotoDate.AddMilliseconds(photo.Number * timeStepMilliseconds);

                var maxTimeRangeDiff = timeStepMilliseconds / 2;

                var closestPointInRange = pointsList
                                          .Where(point => Math.Abs((point.Date - photoDateTime).TotalMilliseconds) < maxTimeRangeDiff)
                                          .OrderBy(point => Math.Abs((point.Date - photoDateTime).TotalMilliseconds))
                                          .FirstOrDefault();

                if (closestPointInRange == null)
                {
                    return null;
                }

                return new PhotoData
                {
                    MovementPoint = closestPointInRange,
                    Photo = photo
                };
            })
                   .Where(pd => pd != null));
        }
示例#19
0
        public string[] RecognizeAll(ImageFolder imf)
        {
            int count = imf.GetCount();

            string[] result = new string[count];
            for (int i = 0; i < count; i++)
            {
                var image = new Image <Gray, byte>(imf.GetImg(i)).Bytes;
                if (image.Length != 32 * 32)
                {
                    result[0] = "wrong image size";
                    return(result);
                }
                if (net.Layers.Count == 0)
                {
                    this.CreateCNN();
                    LoadCNN(path);
                }
                var dataShape  = new Shape(32, 32, 1, 1);
                var data       = new double[dataShape.TotalLength];
                var dataVolume = BuilderInstance.Volume.From(data, dataShape);

                var j = 0;
                for (var y = 0; y < net.Layers[0].InputHeight; y++)
                {
                    for (var x = 0; x < net.Layers[0].InputWidth; x++)
                    {
                        dataVolume.Set(x, y, 0, 0, image[j++]);
                    }
                }
                net.Forward(dataVolume);
                var prediction = net.GetPrediction();
                result[i] = GetClassNameFromNumber(prediction[0]);
            }

            return(result);
        }
示例#20
0
        public Config()
        {
            ApplicationFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            ConfigFile        = Path.Combine(ApplicationFolder, "Config.json");
            dynamic data = JsonParse.Deserialize(File.ReadAllText(ConfigFile));

            GameTitle      = "Bricker";
            GameVersion    = GetVersion();
            DisplayVersion = $"{GameVersion.Major}.{GameVersion.Minor}.{GameVersion.Build}";
            LocalIP        = InterfaceDiscovery.GetLocalIP();
            ServerIP       = JsonParse.GetIPAddress(data.multiplayer.server) ?? DnsHelper.ResolveHost(JsonParse.GetString(data.multiplayer.server));
            ServerPort     = JsonParse.GetUShort(data.multiplayer.port);

            AudioSampleFolder  = Path.Combine(ApplicationFolder, "Samples");
            ImageFolder        = Path.Combine(ApplicationFolder, "Images");
            LogFile            = Path.Combine(ApplicationFolder, "LogFile.txt");
            FontFile           = Path.Combine(ApplicationFolder, "Zorque.ttf");
            HighScoreFile      = Path.Combine(ApplicationFolder, "HighScores.txt");
            InitialsFile       = Path.Combine(ApplicationFolder, "Initials.txt");
            RemoteInstanceFile = Path.Combine(ApplicationFolder, "RemoteInstances.txt");

            Music          = JsonParse.GetBoolean(data.audio.music);
            SoundEffects   = JsonParse.GetBoolean(data.audio.effects);
            ShowGhost      = JsonParse.GetBoolean(data.display.ghost);
            ShowBackground = JsonParse.GetBoolean(data.display.background);
            HighFrameRate  = JsonParse.GetBoolean(data.performance.highFrameRate);
            AntiAlias      = JsonParse.GetBoolean(data.performance.antiAlias);
            ImageFolder    = JsonParse.GetString(data.display.imageFolder, null) ?? ImageFolder;
            if (ImageFolder.StartsWith("./"))
            {
                ImageFolder = Path.Combine(ApplicationFolder, ImageFolder.Substring(2));
            }
            Debug = JsonParse.GetBoolean(data.debug);

            Initials = LoadInitials();
        }
示例#21
0
 public static async Task <bool> SaveAsync(ImageFolder sub_folder, string filename, byte[] data)
 {
     return(await Task.Run(() => Save(sub_folder, filename, data)));
 }
示例#22
0
    private static void FirstImage_Changed(DependencyObject o, DependencyPropertyChangedEventArgs args)
    {
        ImageFolder thisClass = (ImageFolder)o;

        thisClass.SetFirstImage();
    }
示例#23
0
 public static async Task <byte[]> LoadAsync(ImageFolder sub_folder, string filename)
 {
     return(await Task.Run(() => Load(sub_folder, filename)));
 }
 public ImagesService(HttpPostedFileBase image, ImageFolder folder, string subFolder)
 {
     this._folder    = folder;
     this._subFolder = subFolder;
     this.Image      = image;
 }