OpenCv'ye giriş seri yazılarımızı - Nihayet - bitiriyoruz. Yazı dizimize olan müthiş ilgi - ! sizlik - için teşekkürlerimizi bir borç biliriz
Bu yazımızda video ve web camden görüntü almayı anlatıyoruz. bu işe elin oğlu capture demiş.
Hareketli görüntü dediğimizde zaten görüntünün peş peşe gösterilmesi ile oluşuyor.
* capture için CvCapture tipinde bir işaretçi kullanıyoruz
CvCapture *cap;* Video Dosyası için cvCaptureFromFile fonksiyonu kullanıyoruz.
CvCapture* cvCaptureFromFile( const char* dosya_adi );* Web Cam için cvCaptureFromCAM fonksiyonu kullanıyoruz.
cap=cvCaptureFromFile("video.avi");
CvCapture* cvCaptureFromCAM( int index );index : Kamera No, index olara -1 kullandığımızda hangi kamera varsa onu kullanır.
cap=cvCaptureFromCAM( -1 );* Capture ile işimiz bittiğinde cvReleaseCapture fonksiyonuyla ile gereken temizlik yapılıyor.
void cvReleaseCapture( CvCapture** capture );* Alacağımız hareketli görüntünün çeşitli özelliklerini öğrenmek için cvGetCaptureProperty fonksiyonu kullanılır.
cvReleaseCapture( &cap );
double cvGetCaptureProperty( CvCapture* capture, int property_id );capture : cvCaptureFromFile veya cvCaptureFromCAM ile elde ettiğimiz işaretçi
property_id : Öğrenmek istediğimiz özellik
yani
CV_CAP_PROP_POS_MSEC : Video dosyası için milisaniye cinsinden geçen süre* Bahsi geçen Özellikleri değiştirmek için cvSetCaptureProperty fonksiyonu kullanılır benzeri şekilde
CV_CAP_PROP_POS_FRAMES : Frame indeksi - 0 ilk -
CV_CAP_PROP_POS_AVI_RATIO : - Video dosyası için gösterilen yerini (0 ile 1 ) gösteren indeks 0 başlangıç 1 bitiş
CV_CAP_PROP_FRAME_WIDTH : Görüntü Eni - X -
CV_CAP_PROP_FRAME_HEIGHT : Görüntü Boyu - Y -
CV_CAP_PROP_FPS : Saniyedeki Görüntü sayısı
CV_CAP_PROP_FOURCC : 4 karekterden oluşan Video Sıkıştırma Format kısaltması - codec - CV_CAP_PROP_FRAME_COUNT - Video dosyasındaki frame sayısı
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );property_id : Bir önceki fonksiyonda geçti
value : Değiştirmek istediğimiz özelliğin yeni değeri.
Dikkat edilmesi gereken bir nokta her özelliği istediğiniz gibi değiştiremiyorsunuz. Bazıları Web Cam için bazıları Video dosyası için geçerli detay için OpenCv dökümantasyonuna bakın
* Sıra görüntüyü almaya geldi bu iş için cvQueryFrame fonksiyonunu kullanıyoruz
IplImage* cvQueryFrame( CvCapture* capture );oda bize daha önce öğrendiğimiz IplImage cinsinden görüntüyü veriyor gerisi artık bize kalmış OpenCv nin imkanlarıyla istediğimizi yapabiliriz...
Örnek Kod için Buyrunuz : Ders5
Deeep Not : Bu serimizi hele şükür bitirdik. Mütevazi bir bilgisayarda aldık ama henüz içini ayarlayamadık, Yeni projelerimiz var, yazılacak pek çok konu da var. Ama Bir taraftan okur-yazamaz olmamız diğer taraftan vakitsizlik engelliyor. Arayan soranların hatrına İnşallah yazmaya başlayacağız.

8 yorum:
Cooook uzaklardan sizi takip ediyoruz, siz yazmaya devam edin :)
Çoooook uzaklardan takip eden ve talebelerine bir faydamız dokunduysa ne mutlu bize
Ben sizden çok şey öğrendim. Aylar önce yazılan yazılar bazen ilaç gibi gelebiliyor. Ellerinize sağlık. :) Her yazıya da yorum yapmak olmuyor ki..
Her yazı için yorum beklemiyorum
Ama bazen kendi kendime gelin güvey oluyormuş hissine kapılıyorum. yorum yapılmasada konuyla ilgili fikirlerinizi - mesela mail ile - ulaştırmanız önemli çünkü bir şeylerin gelişmesi ancak bu şekilde oluyor. Yurt dışından daha fazla tepki alıyorum.
yazılarınızı siz yazdıktan çok sonra okudum ve çok faydalandım. Umarım yazmaya devam edersiniz!
teşekkürler
bu yazı serinin sonuncusuydu ve bence OpenCvye giriş için yeterli.
Görüntüyü okuyup yazabilir piksellerine erişebilir Video yada kamerdan görüntü alabilir. bazı temel Görütü işleme fonksiyonlarını kullanabilirsiniz...
Merhabalar,
capture islemi video sonlandığından dolayı bitince aynı videoyu aynı cvcapture pointerı üzerinden recapture etmeyi nasıl yapabiliriz acaba?
Mesela dugmeye basıyorum capture ediyor pictureBoxTa goruyorum ve video sonlanıyor ve yine dugmeye basınca yine aynı videoyu gormek istiyorum...
öncelikle yorumlarınıza isim yazarsanız sevinrim
cvSetCaptureProperty de CV_CAP_PROP_POS_FRAMES ile deneye bilirsiniz mesela
Yorum Gönder