Aslında bu konuya pek de girmeyi istemiyordum, Çünkü C# da ben zaten yeniyim. ama ısrarlı sorular ve Özellikle OPOS programını çalıştıramamaktan şikayetler üzerine açıklama yazmak şart oldu.
Baştan başlarsak OpenCv pek yaygın olarak kullanılan bir bilgisayarlı görü (
ComputerVision) kütüphanesidir. Bilgisayarlı Görü İşleminide sadece Görüntü işleme zannetmemek lazım,
bakan değil gören bilgisayar meselesi aslında.
İşte Bu kütüphane (OpenCv) C / C++ da yazıldığında öyle doğrudan DotNet dilleriyle kullanamazsınız. Bazı
metodlarla çağrırmanız lazım. Bu noktada bir kolaylık var, bahsi geçen metodlarla OpenCv ye ulaşmamızı sağlayan
ara kütüphaneler (wrappers) hazırlanmış. Onlardan biri ve de bizim tercihimiz olan OpenCvSharp dır.
Meseleyi böylece özetlediğimize göre yapacaklarımızı anlatalım. OpenCvSharp'ı kullanmak için
OpenCv yi kurmanız lazım. Şu anki kullanılabilir sürüm OpenCv 2.1
İndirme adresinden Windows için hazırlanmış kurulumlu paketini (
OpenCV-2.1.0-win32-vs2008.exe ) indirin ve kurun.
OpenCvSharp ın OpenCv 2.1 için hazırlanmış olan paketini indirin ve Bilgisayarınızda uygun bir yere açın.
İndirecekleriniz
Evet Programlamaya geçmek için yaptığımız hazırlıklar tamamlandı.
Visual C# 'ı çalıştırıp, yeni bir proje oluşturun Konsol yada Winform Farketmez. Sonrasında kullanacğımız kütüphaneleri eklememiz gerekiyor. Solution Explorer da Reference kısmına sağ tıklayıp Add Reference deyip
Browse tabından OpenCvSharpı açtığımız dizine gidip
- OpenCvSharp.Blob.dll
- OpenCvSharp.CPlusPlus.dll
- OpenCvSharp.dll
- OpenCvSharp.Extensions.dll
- OpenCvSharp.MachineLearning.dll
- OpenCvSharp.UserInterface.dll
Kütüphanelerini projenize ekleyin.
OpenCv nin Machine learning kısmı ve
cvblob kütüphanesi C++ ile yazıldığından onlarıda kullanmak istediğinizde "
OpenCvSharpExtern.dll" dosyasının da programınızla aynı yere koymanız lazım.
Bundan sonrası için yapmanız gereken şey OpenCv programınızı yazıp derlemek
using System;
using OpenCvSharp;
class Program
{
static void Main()
{
IplImage src = Cv.LoadImage("lenna.png", LoadMode.GrayScale);
IplImage dst = Cv.CreateImage(new CvSize(src.Width, src.Height), BitDepth.U8, 1);
Cv.Canny(src, dst, 50, 200);
Cv.NamedWindow("src image");
Cv.ShowImage("src image", src);
Cv.NamedWindow("dst image");
Cv.ShowImage("dst image", dst);
Cv.WaitKey();
Cv.DestroyAllWindows();
Cv.ReleaseImage(src);
Cv.ReleaseImage(dst);
}
}
Örnekden de görebileceğiniz gibi OpenCv biliyorsanız kolaylıkla OpenCvSharpda da program yazabilirsiniz. OpenCvSharp'ın örnek programlarını yada bizim
yayınladığımız programları incelemenizi tavsiye ederiz.
Yazı epey bir uzamış ama DLL Cehenneminden (
DLL Hell ) bahsetmeden geçmeyelim. Bizim yayınladığımız programı indirdiniz ve çalıştırmaya kalktınız. OpenCv yi OpenCvSharp 'ı kurduğunuz halde OpenCv dll hatası veriyorsa. İsimleri aynı olmuş olsada versiyonu farklı olan dll ler yüzünden kaynaklanıyordur problem. Yapmanız gereken
Örnek programla birlikte gelen DLL leri ve çalıştırılabilir programı silin.
Programın proje dosyasını açın ve OpenCvSharp referanslarını silin
Kendi sisteminizdeki OpenCv referanslarını ekleyin
Programı tekrar derleyin.
Probleminiz - umuyorum - Çözülmüş olacaktır.
Çözülmemişse de biz buralardayız,
Sıkça Sorulan Sorular kısmını da açtık, sorularınızı bekleriz...
Israrlı Sorular Üzerine Ek:
- OpenCv nin her yeni versiyonunu kurupda denem yapma imkanım ve zamanım yok.
- İlk aşamada bir şeyi öğrenirken var olanı aynen uygulmak lazımdır.
- Genelde oluşan problem OpenCv ve OpenCvSharp'ın yeni versiyonlarını kullanmaya kalkılıyor fakat uyumlu olmayanları kullanıyorsunuz mesela Siz
OpenCv 2.4.3'ü kurmuşsunuz ve OpenCVsharp 2.4.0 ile çalıştırmaya
çalışıyorsunuz...
- Versiyon uyumunu sağladığınız halde çalışmıyorsa eğer OpenCvSharp'a bir bug raporu yazın. ve hali hazırda çalışan örneği yani yukardaki versiyonları kullanarak aynen uygulayın....