public void CreateAndDispose() { using (var model = PHash.Create()) { GC.KeepAlive(model); } }
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"); } }
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); } }
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); } } }
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; } )); }
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); }
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]); } }
public float Instance(PHash a, PHash b) => ImagePhash.GetCrossCorrelation(a.Value, b.Value);
public override int GetHashCode() { return(PHash.GetHashCode()); }