EmguCV – Multiple Face Recognition(Çoklu Yüz Tanıma)
Merhaba,
Görüntü işleme teknolojilerinde nesnelerin tanımlanması, hareketlerin algılanması yahut tüm bunların yanında psikolojik testler veya geleceğe dönük tahminsel oranların elde edilmesi mümkündür. Amma velakin nitelik olarak kompleks ihtiyaçlara giden bu süreç daha da kompleks çalışmalar gerektirmektedir. İşte bu bilinçle yola çıkarak bu içeriğimizde Çoklu Yüz Tanıma diye nitelendirdiğimiz Multiple Face Recognition teknolojisi üzerine konuşuyor, istişare ediyor ve teknik olarak ele alıyor olacağız.
Evet… Şimdi sizlerin eşliğinde bu makalede yazılımsal olarak yüz tanıma üzerine bir süreç geçireceğiz. Herşeyden önce yüz tanıma kavramı üzerinde biraz durup yapacağımız işi daha da netleştirecek, ardından nasıl bir yaklaşım ve algoritma sergileyeceğimiz üzerine istişare ederek son adımda konuyu teknik boyutta ele alıp makalemizi sonlandıracağız.
Öncelikle yüz tanımlama/algılama/bulma ile yüz tanıma arasındaki farkı çizmekte fayda var.
Yüz tanımlama, elimizdeki kaynak görüntü üzerinde yaptığımız tarama sonucu bir yüz ya da yüze benzer tüm ifadeleri algılayarak üzerinde işlem yapmaktır. Yani o yüzün kim olduğu, kime ait olduğu o anlık mevzu bahis değildir. Bu konu üzerinde yapmış olduğumuz önceki şu ve şu çalışmalarıma göz atabilirsiniz.
Yüz tanıma ise, kaynak üzerinde tespit edilen yüzün kime ait olduğunu bulabilmek yani adı üzerinde tanımaktır. Bu yüz, “Hilmi mi?”, “Rıfkı mı?”, “Ayşe mi?” yoksa “Muiddin abi mi?” vs. sorularının cevabını verebilmektir. Bu işlem için yüzün tanımlanması/algılanması/bulunması gereken ilk öncülken, ardından ikinci öncül bu yüzün kime ait olduğu üzerine yapılan çalışma gerçekleşerek tanıma aşaması söz konusu olmakla süreç işlemektedir.
Yüz tanımlama ile tanıma arasındaki farka değindikten sonra heyecanlı bir şekilde sorduğunuz Peki Nasıl Bir Algoritma İzleyeceğiz? sorunuzu duyar gibiyim…
Oo halde hadi gelin şimdide yaklaşımımız üzerine konuşuyor olalalım…
Nasıl Bir Yaklaşım? Nasıl Bir Algoritma?
İster yazılım olsun ister herhangi bir canlı farketmeksizin gördüğü birşeyi tanıması için o şeyi önceden tanımlamış olması gerekmektedir. Yani önceden o şeye bir isim, sıfat, değer yahut sembolik bir ifade vermiş olması gerekmektedir ki sonradan gördüğünde hafızasında o şeyle ilişkili ifade canlansın ve o ifadeyle o şeyi nitelendirebilsin…
Bir insan gördüğü herhangi bir masanın beynindeki masa şeması ile eşleşmesi ve o şemaya “masa” değerini vermesi sonucu ilgili nesneyi gördüğünde onu çok rahat bir şekilde tanımlayabilmesi ve tanıyabilmesi ve hatta tarif edebilmesi işte önceden o nesneyi hafızasına bir şekilde kaydetmesinden kaynaklanmaktadır. Aynı mantıkla bu başka bir insan içinde geçerlidir. Eğer ki ben müneccim değilsem eğer Muhiddin abiyi gördüğüm anda onun o iğrenç suratının beynimdeki şemayla uyması ve onun “Muhiddin” ismiyle tanımlanması neticesinde onu tanıyabiliyor ve gördüğüm zaman ondan kaçabiliyorum…
Her neyse…
İşte bir yazılımda söz konusu olduğunda tanıyacağı nesneyi mukayese edebilecek bir hafızaya sahip olması gerekmektedir. Yani yazılımın beni görüp, algılayıp, ‘aaAa bu Gençay değil mi layhn’ diyerek tanıyabilmesi için önceden hafızasında benimle ilgili verileri tutuyor olması gerekmektedir ki o verilerle mukayese sonucunda gördüğü şeyin ben olup olmama ihtimalini değerlendirebilsin.
Bu demek oluyor ki, yazılımın ha deyince Allah vergisi bir şekilde kişiyi görür görmez kimin Kamil kimin Coni, kimin Abdülrezak olduğunu bilmesi bir hayalden ibaretmiş.
Burada kişileri bizim yazılıma, onun anlayacağı bir dilde, uygun bir formatta tanıtmamız gerekmektedir. Aslında makalemizin ileriki satırlarında teknik olarak ele alacağız ama şimdiden bu konuya kısaca değinmekte fayda var. Yapacağımız işlem, yazılımın tanımasını istediğimiz kişilerin yüz profillerinden en az iki adet olmak üzere farklı açılardan alınmış görüntülerini bir xml formatında uygun şablonda tutmaktan ibarettir. Yazılım tanımladığı yüzleri bu xml veri kaynağındaki değerlerle kıyaslayarak o yüzün kime ait olduğunu %80’lik bir doğruluk payıyla bulabilecektir. Tabi burada ne kadar farklı açıdan resim olursa kişi üzerinde tahmin oranı artacak ve doğruluk payı yükselecektir.
Yüz tanıma işlemi için EmguCV’de(OpenCV’de de) Eigenfaces, Fisherfaces ve LBPH olmak üzere üç adet algoritma mevcuttur. Bu algoritmalar yukarıdaki paragrafta da bahsettiğim gibi hafızadaki görüntülerle o anki tanımlanan yüz arasındaki korelasyona bakarak tahmin işlevini gerçekleştirmektedirler. Ama burada terminolojik bir tezata düşmemek için düzeltmemiz gereken bir tarif vardır. Bu algoritmaların mukayese amaçlı kullanacağı yüz resimlerini bizler manuel olarak oluşturabilir ve xml formatına yazabiliriz. Ama bu işlem binlerce veri söz konusu olduğunda zahmetli olacağı için yazılıma yaptıracağız. İşte yazılımın kişilerin yüzlerini alıp, arka planda belirli bir hafızada depolamasına ve xml formatında bu resimleri organize etmesine “eğitim” denmektedir. Yani yazılımın yüzlere özel kendini eğitmesi söz konusu olacaktır.
Yukarıda bahsettiğimiz üç algoritmayı kısaca özetlemek gerekirse eğer;
- Eigenfaces
Hafızadaki tüm resimlerin ortalamasını alarak ortaya çıkan görüntünün ortalamadan farkını alır. Böylece her görüntü aslında bir diferansiyel görüntü gibi değerlendirilir. - Fisherfaces
Eigenfaces’e nazaran daha da gelişmiş bir yüz tanıma algoritmasıdır. Bir kişiye ait birden fazla fotoğrafı bir sınıfın üyeleri olarak kabul edip sınıflar arası tanıma işlemi yapmaya dayanır. -
LBPH
Bir noktanın etrafındaki piksellerin yoğunluk değerlerine göre oluşan ikili(binary) örüntülerden yaratılır ve bu örüntüler üzerinde işlemler gerçekleştirerek nesneyi aramaktadır.
Şimdi sıra teknik olarak EmguCV ile yüz tanıma işlemini ele almaya geldi. Bu güne kadar bu konuda yapmış olduğum çalışmalar neticesinde Business Recognition ve Classifier Train olmak üzere iki sınıf inşa etmiş bulunmaktayım. Bunlardan Classifier Train isimli olan sınıfımız yüz eğitiminden ve yüz tanıma algoritmasından sorumlu bir sınıftır. Business Recognition sınıfı ise Classifiew Train sınıfını refere etmekte ve eğitim süreciyle birlikte diğer tüm durumları kontrol ettiğimiz sınıftır. Bu iki sınıfın benzerlerini internette görebilirsiniz. Lakin ben sınıfları dahada geliştirerek dizin ve dosya koordinasyonu yapabilir hale getirmiş bulunmaktayım.
Haliyle bir örnek proje üzerinde seyredeceğimiz için gerekli tüm EmguCV entegrasyonu ve alt yapı çalışmasını önceki makalelerimize istinaden sizlere bırakmakla beraber yukarıda paylaştığım sınıfları projenize import etmeyi unutmayınız. Ayriyetten yapmış olduğum çalışmayı makalenin sonunda paylaşacağımıda bildirmek isterim.
1. Adım
Yüzlere Yazılımın Eğitilmesi
Bu işlem için “Business Recognition” sınıfındaki “SaveTrainingData” metodunu kullanmaktayız.
public bool SaveTrainingData(Image face_data, string FaceName) { try { string NAME_PERSON = FaceName; Random rand = new Random(); bool file_create = true; string facename = "face_" + NAME_PERSON + "_" + rand.Next().ToString() + ".jpg"; while (file_create) { if (!File.Exists(Dizin + facename)) file_create = false; else facename = "face_" + NAME_PERSON + "_" + rand.Next().ToString() + ".jpg"; } if (Directory.Exists(Dizin)) face_data.Save(Dizin + facename, ImageFormat.Jpeg); else { Directory.CreateDirectory(Dizin); face_data.Save(Dizin + facename, ImageFormat.Jpeg); } if (File.Exists(Dizin + XmlVeriDosyasi)) { bool loading = true; while (loading) { try { docu.Load(Dizin + XmlVeriDosyasi); loading = false; } catch { docu = null; docu = new XmlDocument(); Thread.Sleep(10); } } XmlElement root = docu.DocumentElement; XmlElement face_D = docu.CreateElement("FACE"); XmlElement name_D = docu.CreateElement("NAME"); XmlElement file_D = docu.CreateElement("FILE"); name_D.InnerText = NAME_PERSON; file_D.InnerText = facename; face_D.AppendChild(name_D); face_D.AppendChild(file_D); root.AppendChild(face_D); docu.Save(Dizin + XmlVeriDosyasi); } else { FileStream FS_Face = File.OpenWrite(Dizin + XmlVeriDosyasi); using (XmlWriter writer = XmlWriter.Create(FS_Face)) { writer.WriteStartDocument(); writer.WriteStartElement("Faces_For_Training"); writer.WriteStartElement("FACE"); writer.WriteElementString("NAME", NAME_PERSON); writer.WriteElementString("FILE", facename); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); } FS_Face.Close(); } return true; } catch (Exception ex) { return false; }
Bu metot tanımlanan yüzleri belirtilen kaynağa aktarma ve bunların yanında gerekli xml formatındaki veri setine ekleme görevinden sorumludur. Formumuzda bu işi yapmakla görevli olan olayımız ise aşağıdaki gibidir.
private async void btnEgit_Click(object sender, EventArgs e) { await Task.Run(() => { for (int i = 0; i < 10; i++) { if (!recognition.SaveTrainingData(pictureBox2.Image, txtFaceName.Text)) MessageBox.Show("Hata", "Profil alınırken beklenmeyen bir hata oluştu.", MessageBoxButtons.OK, MessageBoxIcon.Error); Thread.Sleep(100); lblEgitilenAdet.Text = (i + 1) + " adet profil."; } }); recognition = null; train = null; recognition = new BusinessRecognition("D:\\", "Faces", "yuz.xml"); train = new Classifier_Train("D:\\", "Faces", "yuz.xml"); }
Görüldüğü üzere tanımlanan yüzler pictureBox2 nesnesine atanmaktadır. Haliyle yakalanan bu yüz resimleri SaveTrainingData metoduna gönderilmekte ve program yüzlere özel eğitilmektedirler. Ayrıca, recognition ve train referansları global tanımlandıkları için yeri gelince paylaşılacaktır.
2. Adım
Eğitilen Yüzlerle Tanımlanan Yüzü Kıyaslama
Bu adımda devreye Classifier_Train sınıfının Recognise metodu girecektir.
public string Recognise(Image<Gray, byte> Input_image, int Eigen_Thresh = -1) { if (_IsTrained) { EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image); if (ER == null) { Eigen_label = "Unknown"; Eigen_Distance = 0; return Eigen_label; } else { Eigen_label = ER.Label; Eigen_Distance = ER.Distance; if (Eigen_Thresh > -1) Eigen_threshold = Eigen_Thresh; if (Eigen_Distance > Eigen_threshold) return Eigen_label; else return "Unknown"; } } else return ""; }
Bu metot, gönderilen image nesnesini hafızadakilerle kıyaslayarak eşleşen kaydın bilgilerini dönmektedir.
3. Adım
Tanımlanan ve Tanınan Yüzün Vurgulanıp İsminin Yazılması
Artık sıra formun load eventında çalışmaya geldi. Burada kamera görüntüsü alma, yüz tanımlama ve vurgulama işlemlerinin yanında yüz tanıma algoritmalarını devreye sokacak tetiklemeler yapılmaktadır.
BusinessRecognition recognition = new BusinessRecognition("D:\\", "Faces", "yuz.xml"); Classifier_Train train = new Classifier_Train("D:\\", "Faces", "yuz.xml"); private void Form1_Load(object sender, EventArgs e) { Capture capture = new Capture(); capture.Start(); capture.ImageGrabbed += (a, b) => { var image = capture.RetrieveBgrFrame(); var grayimage = image.Convert<Gray, byte>(); HaarCascade haaryuz = new HaarCascade("haarcascade_frontalface_alt2.xml"); MCvAvgComp[][] Yuzler = grayimage.DetectHaarCascade(haaryuz, 1.2, 5, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(15, 15)); MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5); foreach (MCvAvgComp yuz in Yuzler[0]) { var sadeyuz = grayimage.Copy(yuz.rect).Convert<Gray, byte>().Resize(100, 100, INTER.CV_INTER_CUBIC); //Resimler aynı boyutta olmalıdır. O yüzden Resize ile yeniden boyutlandırma yapılmıştır. Aksi taktirde Classifier_Train sınıfının 245. satırında hata alınacaktır. pictureBox2.Image = sadeyuz.ToBitmap(); if (train.IsTrained) { string name = train.Recognise(sadeyuz); int match_value = (int)train.Get_Eigen_Distance; image.Draw(name + " ", ref font, new Point(yuz.rect.X - 2, yuz.rect.Y - 2), new Bgr(Color.LightGreen)); } image.Draw(yuz.rect, new Bgr(Color.Red), 2); } pictureBox1.Image = image.ToBitmap(); }; }
Şimdi projemizi derleyip nasıl çalıştığına göz atalım.
Peder Beyle deneme yaperken 🙂
Peder Beyle ikinci denememiz 🙂
Örnek projeyi indirmek için buraya tıklayınız.
Okuduğunuz için teşekkür ederim…
Hepinize iyi çalışmalar, sonraki yazılarımda görüşmek dileğiyle…
Gencay abi çalışman çok iyi olmuş kodları e-mailime atma şansın varmı.
e-mail:muratbahar2732@outlook.com
Çalılşmanız çok güzel olmuş elinize sağlık.Projeyi gönderirseniz memnun olurum
e-mail:muratbahar2732@outlook.com
Kardeşim Ellerine Sağlık o kadar siteden aradım şöyle basit anlaşılır ve çalışanını bulamadım.Çok teşekkür ederim kodlarını projemde kullanacağım Hakkını Helal ET.
Helal olsun tabi ne demek 🙂
Kardeşim projenin kodlarını bana da ulaştırabilir misin sorun değilse projem için bir kısmında yararlanmak isterimde e mail:cengiz.tr.oz@gmail.com
Makaleye göz atarsanız örnek proje dosyasını indirebilirsiniz.
kodlarına ulaşamadığım için sizden böle bir istekde bulunmuştum .
Hocam örnek projeyi indirdiğiniz vakit kodlara ulaşabiliyorsunuz!
Nasıl oluyorda projenin kodlarına erişemediniz?
SelMun aleykum GENCAY bey Dosya indiriliyor ama acilmiyor
TamMam da TurGUt beEY nEdeN Böyle YAzıyoRSun?
Eline sağlıkta, niye küçük paketi RAR dosyaya koyarsın.? zip dosyaya koy windows otomatik açsın. şimdi bide virus olma ihtimali olan rar açan yazılım yüklemek lazım.
Yinede anlaşılır paylaşımın için teşekkür ederim, ama ben indirmedim.
Azarıda yedik tam oldu 🙂
Gencay bey ellerinize sağlık çok faydalı güzel bir çalışma olmuş.
projeyi indirdim çalıştır dediğimde hata vermiyor hemen durduruyor sorun nedir acaba
“… hata vermiyor …” demişsiniz. Hiçbir tepki vermeksizin programı mı durduruyor?
Gencay bey
Visual Studio üzerinde start ettiğim zaman hiç tepki vermeden ( HATA VERMEDEN ) program duruyor.. ancak bin->debug içerisindeki EXE çalışıyor…
Gencay bey, çalışmalarınızı çok faydalı olmuş öncelikle teşekkür ederim. Bu yapmış olduklarınızı Asp.net web uygulaması içerisinde de yapabilir miyiz?
Merhaba Didem Hanım;
Öncelikle nezaketiniz için bende teşekkür ederim.
Sorunuza gelirsek eğer; bu çalışmayı direkt Asp.NET uygulaması olarak ayağa kaldıramazsınız. Mimarisel açıdan üzerinde çalışma yapmanız gerekecektir.
İyi çalışmalar dilerim.
Selamlar Gencay Bey. Öncelikle Çok ama Çok teşekkür ederim. Tüm interneti taradım böyle güzel anlatım görmedim. Emeğinize sağlık. projeyi çalıştırdım sorun yok. İki sorum olacaktı
1. Ben Bilişim Öğretmeniyim Öğrencimle bitki tanıma ile ilgili proje yapıyoruz bu konuda yardımcı olursanız sevinirim.
2. form’un load olayında açılır açılmaz tanımadığı yüz olsa bile ilk tanıdığı adı veriyor ordaki problemi nasıl giderebiliriz.
Merhabalar Gencay Bey çalışmalarınız çok başarılı tebrik ederim. Ben Bilişim Öğretmeniyim öğrencilerimizle proje geliştiriyoruz. Bazı konularda yardımınızı rica edebilir miyim. E-Posta adresinizi alabilir miyim?
Merhaba,
“gyildizmail@gmail.com” mail adresim. Fırsat buldukça size yardımcı olmaya çalışırım. Buyrun.
Valla abi ben 18 yaşında yım allahın izniyle yapay zeka projemi 2-3 yıla tamamlarım çok yararlı bir makale.
Merhabalar Gencay Bey çalışmalarınız çok başarılı tebrik ederim.
Emgu cv ile yüz tanıma sistemi yapmaktayım. Şöyle bir sıkıntım var yardımcı olabilir misiz ?
Sisteme yeni yüz kaydı yapacağım zaman tanıtmadığım yüze en son kayıt ettiğim kişinin ismini veriyor. Tanınmamış kişide ismin olmamasını istiyorum. Ne yapmam gerekiyor?
tebrikler çok güzel bir çalışma devamını bekliyorum takipdeyim 🙂
Merhaba projede kullandığın xml dosyasını paylaşmanız mümkün mü acaba
hocam ben tüm yüzleri kadın-erkek olarak eğittim sadece cinsiyet belirliyorum. Birde ekranda görünen yüzlerin sayısını bastırmak istiyorum. Misal 2 erkek 3 kadın. Bu konuda yardımcı olabilir misiniz?
Ben vakitten dolayı olamam ama olanlar olabilir diye yorumunu paylaşıyorum 🙂
Aslında pek vaktinizi alacağını sanmıyorum. Sizin kodunuzu kullanıyorum zaten. Aynı kodlara tekrar bakarsanız yardımcı olabilirsiniz diye düşünüyorum 🙂
Yakaladığın görüntülerin Count’ını alman gerekmektedir. Bu makaleyi yazalı yaklaşık 2 yıl oldu. Dolayısıyla oturup yakalanan görüntünün hangi koleksiyonda olduğuna göz atmam gerekecek. Bunu sende yapabilirsin. Elinde görüntüleri getiren bir koleksiyon olmalı. “.Count” işini görecektir.
Eline sağlık Reis
İyi günler gencay bey. Yüz tanıma ve recognize emgucv ile ilgili ders veriyormusunuz eğer verirseniz asağıdaki eposta ile görşelim
akindinc@gmail.com
Merhaba,
Hayır vermiyorum.
GENCAY BEY YUKARIDAKİ EN SON YAPIYI EKLEDİĞİMDE HATA VERİYOR.
private void load_AND_train_dataface() YAPISINI EKLEYENE KADAR YÜZ BULUYOR.SQL KISMINA EKLİYOR AMA SON KISMI EKLEYİNCE HATA VERİYOR.
Bana acilen ulaşabilme imkanınız var mı ? Sizinle aynı projeyi yapıyorum fakat veri tabanına yüzü nasıl atacağımı bir türlü beceremedim
furkan.cetkin@hotmail.com
var grayimage = image.Convert();
bu satırda hata alıyorum.
nesne başvurusu bir nesnenin örneğine atanmadı.
neden olabilir. sizin örnek proje ile bu hatayı alıyorum.
aynı hatayı bende alıyorum “Nesne başvurusu bir nesnenin örneğine ayarlanmadı” “image was null”
” var grayimage = image.Convert(); ” küçük büyük karakteri arasındaki kısım burada çıkmıyor…
merhabalar paylaşım için teşekkür ederim. İlk yüzü hafızaya kayıt edince , aynı yüzü görünce isim yazıyor ama farklı bir yüz gelince onuda ilk yüzün adı ile etiketliyor sorun nerede olabilir acaba.
Birde ilk yüzün 10 adet profilini pc ye kayıt ediyor ama 2. yüzü eğit dediğimde ilk yüzü kayıt ettiği yerde 2. yüzün 10 adet profili gözükmüyor sorun burada olabilir mi ? Şimdiden teşekkür ederim.
hata düzeldi gibi anlam veremedim
Eğittikçe düzelecektir. Daha çok yüze eğitin.
Gencay bey merhabalar. Benim vesikalıktan kişinin geçtiği resimleri bulabileceğim bir kütüphaneye ihtiyacım var. Bu emgucv ile bu işlemi hızlı bir şekilde yapabilirmiyim veya alternatif kütüphaneler(ücretli ya da ücretsiz) varmıdır. Bereden başlayabilirim. yardımcı olabilirmisiniz. Şİmdiden teşekürler
Merhaba,
Bu işlemi EmguCV ile bu içerikte bahsettiğimiz yöntem üzerinden hızlıca geliştirebilir ve kullanabilirsiniz. Bu içerik yazılalı iki yılı geçtiğinden dolayı EmguCV’nin üç aşağı beş yukarı değişikliğe uğramış olması muhtemeldir. Tabi isterseniz Accord.NET yahut OpenCV kütüphanelerinide araştırabilirsiniz.
Kolay gelsin.
Gencay bey merhabalar.emgucv ile kapı giriş sistemine yakın bir sistemi çalışır hale getirdim. kişiyi kayıt yapıyoruz ve sonrasında sisteme girişini kameradan aldığımız görüntü ile kayıtlı resmi karşılaştırıp login işlemini gerçekleştiriyorum. benim yapmak istediğim ise arşiv taraması yapmak. burada nasıl bir yol izleyeceğim biraz yol gösterebilir misiniz.
Merhaba,
Burada anlatılan Face Recognition işlemini fonksiyonel hale getirip, elde edilen yüz resmini bu fonksiyon aracılığıyla arşivdekilerle kıyaslayıp, tarayabilirsiniz.
hocam lütfen yardım. Kayıt etmediğim kişi tanımsız olarak algınaması lazım. kendi resmimi tanıtınca adımı gösteriyor ama oğlumun resmini hiç tanıtmıyorum onuda benim adımla gösteriyor.
Yazılımda if( train.IsTrained) anladığım kadarıyla eğitilmiş resim olup olmadığına bakıyor . Sadece kendi fotomu eğitsem bile oğlumun fotosunda tanımsız yazması lazımken benim adımı yazıyor.
yani bu if( train.IsTrained) sorgulamasında sadece eğilmiş yüz olup olmadığına değilde eğitilen foto ile ana ekranda çıkan fotoyu nasıl kıyaslama yapacaz.
O sistemin tam olarak çalışmadığını not olarak yazmış.
abi bu tanıtma işini yüz dışında şeylerede yapabilirmiyiz
Cascade yapılanmasını kullanarak yapabilirsiniz.
DllNotFoundException: DLL ‘opencv_core2410’ yüklenemedi: Belirtilen modül bulunamadı. (HRESULT özel durum döndürdü: 0x8007007E) bu hatayı alıyorum nedeni ne olabilir capture kısmında
Merhabalar Gencay Bey, bahsettiğiniz 3 algoritmadan hiçbirini kullanmadan mı bu projeyi yaptınız?
Merhaba,
Bu algoritmaları kullanabilmek için işin matematiğine hakim olman gerekiyor. Sen olma diye OpenCV, EmguCV kütüphaneleri oluşturulmuştur. Bu kütüphaneleri kullanarak direkt operasyonları sağlayabilirsiniz.
Gencay bey test data’yı random mu seçiyor .
Capture capture = new Capture(); hatası alıyorum buranın altını çiziyor o yüzden program çalışmıyor yardım eder misiniz ? proje için çalışıyorum bu hatanın sebebi nedir???
Merhaba Gencay Bey
Kamera kısmına IP kamera nasıl ekleriz.
Kameranın önunden gencay 10 defa geçti diyelim labele bu sayıyı nasıl yazdırırız
Hocam iyi günler, aynı projede sorguyu dosyadan değil de sql den yaptırmak istesek nasıl bir yol izlemeliyiz.
hocam typeinizitionexception hatası alıyorum copy to always yaptım ama olmadı neden bu hatayı alıyorum sinir etti 2 gündür yardımcı olabilirseniz sevinirim.allaha emanet olun.