Pazar, Ağustos 14, 2011

OpenCv ile Arka plan silme (Background subtraction )


Background Subtraction with OpenCv from bluekid on Vimeo.

Evet Uzun bir aradan sonra basit bir OpenCv uygulamasıyla yine karşınızdayız.
Siz benim basit dediğime bakmayın araç ve insan sayma hareket algılama gibi pek çok uygulamanın temelinde bu yapı vardır. Örenğin basit oluşu OpenCv nin sağladığı imkanlardandır.

programımızın ana özelliği OpenCv 2.3 ile derenmiş olması ve herzamankinin aksine C API yerine OpenCv  C++ API yapılarının kullanılmış olmasıdır. OpenCv eskiden C API temelinde geliştiriliyordu. İkinci versiyonundan itibaren C++API temelinde geliştiriliyor ve bu yapı tavsiye ediliyor. Geriye uyumluluk ve diğer dillere olan destek sebebiyle C API da korunuyor elbette . bu yüzden eski şekildede kodlamaya da devam edebilirsiniz.

Öncelikle OpenCv 2.3 ile ilgili karşılaştığım problemlerden bahsedeyim.
Bu dağıtımın windows versiyonu ile birlikte pek çok derlenmiş kütüphane dağıtılmış.
x86 ve 64 bit için olanlar,
Mingw için VC9 için olan VC 10 için olan diye adlarıyla uyumlu dizinlere konmuşlar.
Ben bu kütüphaneleri kullanarak  cvPreProcessori hiç problemsiz tekrar derledim.
Fakat Anlaşılmaz bir şekilde C++API nı kullandığım örnekleri link edemedim.
Uzun uğraşlardan sonra probemin dağıtımla gelen hazır kütüphanelerden olduğuna kanaat getirdim.
kendi kütüphanemizi kendimiz derleyelim deyip daha önce anlattığım şekilde  işlemler yaptım. Sonuçda elde ettiğim kütüpheler ile Videodanda görebileceğiniz gibi, problemsiz C++ API örneklerini çalıştırabildim.

Ben OpenCv 2.3'ü   " C:\OpenCV-2.3.0" dizinine kurdum.
Kütüpheneleri CMake ile Tekrar derlemek için   "C:\OpenCV-2.3.0\mingw"
dizinini açtım.
Örnek programdaki dizin ayarları ona göre yapıldı tekrar derlemeye kalkarsanız kendi dizin ayarlarınızı yapmanız lazım yada benim dizin ayarlarıma uygun derleme yapın.
Programı indirmek  için : BackGround Subtraction



6 yorum:

Adsız dedi ki...

güzel bir çalışma teşekkürler, acaba hangi ide yi kullanıyor sunuz?

bluekid dedi ki...

Elbette CodeBlocks

Adsız dedi ki...

tam ben de ide yi soracaktım :D gerçekten güzelmiş :D bir de c# diye bi icon var o hangi ide?

leo dedi ki...

Hocam Kaynak kodda ufak bir hata var
BackgroundSubtractorMOG2 yazılmış
BackgroundSubtractorMOG olacak bende rastlantı sonucu fark ettim kolay gelsin...

bluekid dedi ki...

:)
yanlışlık yok
her ikside var
http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html#backgroundsubtractormog2

leo dedi ki...

bende ne hikmetse ilkten kod hata veriyordu 2'yi anlamsız görüp çıkartıgımda "BackgroundSubtractorMOG" çalişdı