Pazar, Ekim 24, 2010

OpenCvSharp Kurulumu ve Kullanımı

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: 

  1. OpenCv nin her yeni versiyonunu kurupda denem yapma imkanım ve zamanım yok.
  2. İlk aşamada bir şeyi öğrenirken var olanı aynen uygulmak lazımdır.
  3. 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...
  4. 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....

15 yorum:

Adsız dedi ki...

Selamlar,

OpenCVSharp kullanarak bir proje geliştirmeye çalışıyorum; fakat CV.filter2d,cv.laplace vb. metotları kullanamıyorum.

OpenCV'deki gibi tüm metotlar kullanılamıyor mu? Bilgilendirirseniz, sevinirim.

Adsız dedi ki...

ayni söyledikleriniz gibi yapiyorum ama bende Projeyi derlemeye kalktigimda söyle uyari veriyor.
[URL=http://www.directupload.net][IMG]http://s1.directupload.net/images/110322/ag3yrr85.png[/IMG][/URL]

bluekid dedi ki...

kurduğunuz bütün Opencv bileşenlerini kaldırın
sonra yazıdaki sırasına göre yapın
hala olmuyorsa , detaylı yardım için e-posta atın adres profil sayfaında var

Adsız dedi ki...

Merhaba,
Lokal olarak projemi çalıştırabiliyorum. Yalnız server a publish ettiğimde bin klasörünün içindeki yolunu belirttiğim dll leri görmeyip catch bloğuna düşüyor. İşin garip bir başka kısmı da, hala dosya yolu olarak lokal bilgisayarımdaki yolu almaya çalışması.

Server'a herhangi bir kurulum yapmadım. Proje içindeki .dll ler yeterli değil mi acaba ve bu dosya yolu gerçekten kafamı çok karıştırmış durumda.

Yardımlarınız için teşekkür ederim şimdiden.

bluekid dedi ki...

web projesi olarak hiç kullanmadım
ama benim fikrim Servera OpenCv kurmanız lazım

Adsız dedi ki...

Teşekkür ederim.

Peki server a Visual Studio kurmadan opencv nasıl kurabilirim acaba ?

bluekid dedi ki...

OpenCv nin VS ile alakası yok

Adsız dedi ki...

Tamam alakası yok belki ama visual studio da referanslar ekleyerek anlatım yapılmış her yerde.

Benim sorum vs olmadan nasıl kurabilirim.

Teşekkürler

Murat dedi ki...

OpenCvSharp dll dosyalarını yanlıs yuklemıssınız. dll hatasını sonunda düzelttim doğru dll dosyaları https://code.google.com/p/opencvsharp/downloads/detail?name=OpenCvSharp-2.1-x86-20110509.zip&can=2&q=
bu linkte

bluekid dedi ki...

yanlışlık yok aslında bu yazının yayınlandığı tarihte link bu şekildeymiş bu link "Deprecated" edilip "May 09, 2011" sizin verdiğiniz linkteki hali yayınlanmış

Burak TaŞ dedi ki...

dosyada dll dosyalarını bulamadım.

bluekid dedi ki...

internette aratın

EMRE SAYGIN dedi ki...

Arkadaslar denılen herseyı uyguluyorum ama referanslar gozukmuyor ekleyemıyorum nedenı ne olabılır acaba ?

Mazlum Yorulmaz dedi ki...

hocam kolay gelsin ben bu projenizi vs2013 te açmaya çalıştım ama başaramadım bu konuda yardımcı olurmusunuz

bluekid dedi ki...

güncel kullanım dökümanı için OpenCvSharp ın kendi sitesine bakın