public Tuple <int, double> GetMostSimilarImage(Bitmap searchImage, string[] imageFileArray, List <Color> centroidColorList) { int mostSimilarImageIndex = 0; double maxSimilarity = 0; for (int i = 0; i < imageFileArray.Length; i++) { string image = imageFileArray[i]; using (Bitmap bmpImage = new Bitmap(Image.FromFile(image), searchImage.Width, searchImage.Height)) { using (Bitmap bmpPorcessedImage = _imageSearchAlgorithm.ProcessImage(bmpImage, centroidColorList)) { double similarityPercent = CalculateSimilarity(searchImage, bmpPorcessedImage); if (similarityPercent > maxSimilarity) { mostSimilarImageIndex = i; maxSimilarity = similarityPercent; } } } } return(new Tuple <int, double>(mostSimilarImageIndex, maxSimilarity)); }
private void resimyukle_Click(object sender, EventArgs e) { //bugünün tarihi DateTime dt = DateTime.Today; int yil = dt.Year; int ay = dt.Month; int gun = dt.Day; labeltarih.Text = gun.ToString() + "/" + ay.ToString() + "/" + yil.ToString(); // pictureBox2.Image = pictureBox1.Image; //picturebox2 den görüntü al yani resmini çek SaveFileDialog swf = new SaveFileDialog(); //kaydet Bitmap bmpKucuk = new Bitmap(pictureBox2.Image, 300, 300); // Yeniden boyutlandırmak için //Bitmap sınıfı kullanılır Picturebox da yüklü olan resim 100 e 50 boyutunda yeniden boyutlandırılıyor. Kümeleme yönteminini kullanılması için pictureBox2.Image = bmpKucuk; //picture2 nin boyutlarını değiştir pictureBox2.SizeMode = PictureBoxSizeMode.CenterImage; pictureBox3.Image = pictureBox2.Image; //pictruebox3 e picturebox2 yi ata bmpSearchImage = new Bitmap(pictureBox3.Image); // picturebox3 bitmap oluştur swf.Filter = "(*.jpg)|*.jpg|Bitma*p(*.bmp)|*.bmp"; //fotograf cinsini ayarla _centroidColor.Add(Color.Green); //renk değişkenime yeşil rengini ekledim _centroidColor.Add(Color.Red); // kırmızı rengi ekledim _centroidColor.Add(Color.Blue); // mavi rengi ekledim txtCentroids.Text = _centroidColor.Count.ToString(); // 3 rengimiz oluştu yani RGB renkleri kümeleme yöntemini kullanmak için //process _algorithm.RunAlgorithm(bmpSearchImage, _centroidColor.Count); bmpSearchImageProcessed = _algorithm.ProcessImage(bmpSearchImage, _centroidColor); /*RGB renklerini kümeleme işlemi yaparak görüntümüzü bölümlere ayırır ve benzer piksellerin aynı renk olması durumunu sağlar.*/ //seçilen klasördeki tüm görüntüler için ayırdıgımız pixellere göre görüntü benzerliğini hesaplar. Sonuçta listeyi benzerliğe göre sıralar.Bizde en çok yüzdeye sahip olan fotografı getiririz. _searchImage = new ResimleAra(_algorithm); similarityList = _searchImage.SortBySimilarity(bmpSearchImageProcessed, _fileArray, _centroidColor); // fileList.Items.Clear(); List <string> tempList = new List <string>(); //templist listesi oluşturur foreach (var imagePath in similarityList) { tempList.Add(imagePath.Key); } _fileArray = tempList.ToArray(); foreach (var imagePath in _fileArray) { fileList.Items.Add(System.IO.Path.GetFileNameWithoutExtension(imagePath)); } fileList.SelectedIndex = 0; //en çok benzerlik olan fotografı seçer textBox1.Text = Convert.ToString("C:\\Users\\yaren\\Desktop\\Photo\\" + fileList.SelectedItem + ".jpg"); // texboxa çekilen resimden buldugu resmi yani urlsini yazdır pictureBox9.Image = Image.FromFile(textBox1.Text); //picturebox9un resim yoluna textbox1 i ata string sorgu = "select AdSoyad from MusteriKayit where CihazResmi = '" + textBox1.Text + "'"; //textboxda yazan resmin verilerini getir DataSet ds = doldur(sorgu); sorgu = "select AdSoyad,Telefon,Email,CihazAdi,CihazMarkasi,CihazModeli,CihazArizasi,TeslimAlinanTarih from MusteriKayit where AdSoyad='" + ds.Tables[0].Rows[0][0] + "'"; ds.Clear(); ds = doldur(sorgu); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { // çektiğimiz verileri labela yazdırma labelad.Text = (ds.Tables[0].Rows[i][0].ToString()); labeltelefon.Text = (ds.Tables[0].Rows[i][1].ToString()); comboBox2.Items.Add(labelad.Text); comboBox2.SelectedIndex = 0; labelemail.Text = (ds.Tables[0].Rows[i][2].ToString()); labelcihazadi.Text = (ds.Tables[0].Rows[i][3].ToString()); labelcihazmarkasi.Text = (ds.Tables[0].Rows[i][4].ToString()); labelcihazmodeli.Text = (ds.Tables[0].Rows[i][5].ToString()); labelalinantarih.Text = (ds.Tables[0].Rows[i][7].ToString()); labelcihazarizasi.Text = (ds.Tables[0].Rows[i][6].ToString()); } panel1.Visible = true; pictureBox1.Visible = false; button3.Visible = true; }