示例#1
0
 public void CreateAndDispose()
 {
     using (var model = PHash.Create())
     {
         GC.KeepAlive(model);
     }
 }
示例#2
0
        private void PHashToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (isPHashCompare)
            {
                setIntilControl();
            }
            if (pb1.Image != null)
            {
                originalImage();
                var alg        = new PHash();
                var hashResult = new Mat();
                //Compute the hash
                alg.Compute(ImgInput, hashResult);

                // Get the data from the unmanage memeory
                var data = new byte[hashResult.Width * hashResult.Height];
                Marshal.Copy(hashResult.DataPointer, data, 0, hashResult.Width * hashResult.Height);

                // Concatenate the Hex values representation
                var hashHex = BitConverter.ToString(data).Replace("-", string.Empty);
                // hashHex has the hex values concatenation as string;
                toolStripStatusLabel1.Text = "PHash: " + hashHex;
                hideThresholdingControls();
            }
            else
            {
                MessageBox.Show("Please open the image.", "Please");
            }
        }
示例#3
0
 public void CompareSameImage()
 {
     using (var model = PHash.Create())
         using (var img1 = Image("lenna.png", ImreadModes.GrayScale))
         {
             double hash = model.Compare(img1, img1);
             Assert.Equal(0, hash, 6);
         }
 }
示例#4
0
 public void CompareDifferentImage()
 {
     using (var model = PHash.Create())
         using (var img1 = Image("lenna.png", ImreadModes.GrayScale))
             using (var img2 = Image("building.jpg", ImreadModes.GrayScale))
             {
                 var size = new Size(256, 256);
                 using (var scaledImg1 = img1.Resize(size))
                     using (var scaledImg2 = img2.Resize(size))
                     {
                         double hash = model.Compare(scaledImg1, scaledImg2);
                         Assert.Equal(264411, hash, 6);
                     }
             }
 }
示例#5
0
 public async Task <IEnumerable <PHash> > ComputePHashs(IEnumerable <Photogragh> photograghs)
 {
     return(await Task.Run(() =>
     {
         var list = new BlockingCollection <PHash>();
         Parallel.ForEach(photograghs, photo =>
         {
             var phash = new PHash(photo.ComputePHash());
             list.Add(phash);
         });
         list.CompleteAdding();
         return list;
     }
                           ));
 }
示例#6
0
        public async Task CanLoadAndCompareDDSImages()
        {
            var hash1 = await ImageState.GetPHash(AbsolutePath.EntryPoint.Combine("Resources", "test-dxt5.dds"));

            var state1 = await ImageState.GetState(AbsolutePath.EntryPoint.Combine("Resources", "test-dxt5.dds"));

            Assert.Equal(512, state1 !.Width);
            Assert.Equal(512, state1 !.Height);
            Assert.Equal(DXGI_FORMAT.BC3_UNORM, state1.Format);

            var hash2 = await ImageState.GetPHash(AbsolutePath.EntryPoint.Combine("Resources", "test-dxt5.dds"));

            // From old embedded hashing method, we want to make sure the hashing algorithm hasn't changed so much that
            // we've broken the old caches
            var hash3 = PHash.FromBase64("cns+/2xel0ulcwCXeTlVW2x5aGtwaGl9glpthWZkb2ducnF0c2lvgQ==");


            Assert.Equal(1, hash1.Similarity(hash2));
            Assert.True(hash1.Similarity(hash3) > 0.99f);
        }
示例#7
0
        public void Compute()
        {
            using (var model = PHash.Create())
                using (var img = Image("lenna.png"))
                    using (var hash = new MatOfByte())
                    {
                        model.Compute(img, hash);
                        Assert.Equal(1, hash.Rows);
                        Assert.Equal(8, hash.Cols);
                        Assert.Equal(MatType.CV_8UC1, hash.Type());

                        var hashArray = hash.ToArray();
                        Assert.Equal(152, hashArray[0]);
                        Assert.Equal(99, hashArray[1]);
                        Assert.Equal(42, hashArray[2]);
                        Assert.Equal(180, hashArray[3]);
                        Assert.Equal(206, hashArray[4]);
                        Assert.Equal(197, hashArray[5]);
                        Assert.Equal(97, hashArray[6]);
                        Assert.Equal(25, hashArray[7]);
                    }
        }
示例#8
0
 public float Instance(PHash a, PHash b) => ImagePhash.GetCrossCorrelation(a.Value, b.Value);
示例#9
0
 public override int GetHashCode()
 {
     return(PHash.GetHashCode());
 }