private void ProcessImages(FileInfo[] files)
        {
            var comparableImages = new List <ComparableImage>();

            var index = 0x0;

            var operationStartTime = DateTime.Now;

            foreach (var file in files)
            {
                var comparableImage = new ComparableImage(file);
                comparableImages.Add(comparableImage);
                index++;
                Invoke(updateOperationStatusDelegate, new object[] { "Processed images", workingLabel, workingProgressBar, index, operationStartTime });
            }

            Invoke(setMaximumDelegate, new object[] { workingProgressBar, (comparableImages.Count * (comparableImages.Count - 1)) / 2 });

            index = 0;

            var similarityImagesSorted = new List <SimilarityImages>();

            operationStartTime = DateTime.Now;

            for (var i = 0; i < comparableImages.Count - 1; i++)
            {
                for (var j = i + 1; j < comparableImages.Count; j++)
                {
                    var source      = comparableImages[i];
                    var destination = comparableImages[j];
                    var similarity  = source.CalculateSimilarity(destination);
                    var sim         = new SimilarityImages(source, destination, similarity);

                    similarityImagesSorted.Add(sim);
                    index++;

                    Invoke(updateOperationStatusDelegate, new object[] { "Compared images", workingLabel, workingProgressBar, index, operationStartTime });
                }
            }

            similarityImagesSorted.Sort();
            similarityImagesSorted.Reverse();
            similarityImages = new BindingList <SimilarityImages>(similarityImagesSorted);

            BeginInvoke(updateDataGridViewDelegate, new object[] { similarityImages, imagesDataGridView });
        }
Beispiel #2
0
        private void ProcessImages(DataTable dt)
        {
            var comparableImages = new List<ComparableImage>();

            //Invoke(setMaximumDelegate, new object[] { workingProgressBar, files.Length });

            var index = 0x0;

            var operationStartTime = DateTime.Now;
            int k = Application.StartupPath.IndexOf("\\bin");
            string sub = Application.StartupPath.Substring(k);
            string ImagePath = Application.StartupPath.Substring(0, Application.StartupPath.Length - sub.Length) ;
            foreach (DataRow row in dt.Rows)
            {

                var comparableImage = new ComparableImage(new FileInfo(ImagePath+row["Url"].ToString()));
                comparableImages.Add(comparableImage);
                index++;
                //Invoke(updateOperationStatusDelegate, new object[] { "Processed images", workingLabel, workingProgressBar, index, operationStartTime });
            }

           // Invoke(setMaximumDelegate, new object[] { workingProgressBar, (comparableImages.Count * (comparableImages.Count - 1)) / 2 });

            index = 0;

            var similarityImagesSorted = new List<SimilarityImages>();

            operationStartTime = DateTime.Now;
            double maxSimilarity = 0;
            for (var i = 0; i < comparableImages.Count; i++)
            {
                if (exit)
                {
                    return;
                }
                ComparableImage sourceImage = new ComparableImage(new FileInfo(ImageName));
                var destination = comparableImages[i];
                var similarity = sourceImage.CalculateSimilarity(destination);
                 
                var sim = new SimilarityImages(sourceImage, destination, similarity);
                if (sim.Similarity>=double.Parse(txtPrecision.Value.ToString()))
                {
                    if (maxSimilarity < sim.Similarity)
                        maxSimilarity = sim.Similarity;
                    similarityImagesSorted.Add(sim);
                    index++;
                }
            }

            similarityImagesSorted.Sort();
            similarityImagesSorted.Reverse();
            similarityImages = new BindingList<SimilarityImages>(similarityImagesSorted);

            BeginInvoke(updateListViewDelegate, new object[] { similarityImages, lvImageSimilar });
        }