Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OpenCV] Pobranie rzeczywistej(terazniejszej) klatki z kamery

Ostatnio zmodyfikowano 2012-11-10 17:10
Autor Wiadomość
matka5432
Temat założony przez niniejszego użytkownika
[OpenCV] Pobranie rzeczywistej(terazniejszej) klatki z kamery
» 2012-11-10 15:27:31
Witam, mam taki problem z pobieraniem klatek w OpenCV. Aby wytlumaczyc moj problem posluze sie tym kodem:
C/C++
#include <highgui.h>
int main()
{
    IplImage * img;
    CvCapture * capture = cvCaptureFromCAM( 0 );
    while( 1 )
    {
        cvGrabFrame( capture );
        img = cvRetrieveFrame( capture );
       
        cvShowImage( "View", img );
       
        cvWaitKey( 1 );
    }
}
Kod po skompilowaniu wyswietla w oknie "Viev" Pierwsza pobrana klatke z kamery (np zdjecie sciany), do tej pory moze sie wydawac, ze wszystko jest w porzadku. Jezelii teraz dam przed kamere reke i klikne jakis klawisz, powinna pojawic sie zdjecie reki, lecz pojawia sie dopiero w 5 klatce. Nie jestem pewien czemu tak sie dzieje, ale wydaje mi sie, ze w moemencie, w ktorym teoretycznie jest wszystko dobrze program pobiera od razu 5 klatek.
Jezeli petla dziala bez opoznienia (pokazuj klatke dopoki nie zostanie wcisniety dowolny klawisz) to w oknie "Viev" jest wyswietlany normalny obraz z kamery, ale z opoznieniem 0,2 sek. poniewaz kamera wysyla 25 klatek na sek. a 5 klatek to 0,2 sekundy ;]. Da sie zrobic cos, aby program pobieral rzeczywisty obraz z kamery? chocby w powyzszym programie, zeby po kliknieciu dowolnego klawisza zostal wyswitlony obraz terazniejszy ?
Z gory dziekuje.
P-68932
DejaVu
» 2012-11-10 16:11:07
Sprawdź jakiś istniejący program czy wyświetla obraz z kamerki w czasie rzeczywistym. Bardzo możliwe, że są to ograniczenia sprzętowe kamery i tego nie przeskoczysz.
P-68934
matka5432
Temat założony przez niniejszego użytkownika
» 2012-11-10 16:26:35
Moze i to przez kamerke, ale w programie, ktory napisalem na pewno nie jest to wywalane ograniczeniami kamerki. Moze nie wyrazilem sie jasno. Sproboje inaczej. Moj program po kliknieciu na dowolny klawisz powinien pobrac klatke z kamerki - zrobic zdjecie.
A dzieje sie cos takiego:
po skompilowaniu program pobiera i zapisuje dokladnie 5 klatek:
pierwsza
druga
trzecia
czwarta
piata
(minelo jakies 0,2 sec.)

i teraz sobie czeka az klikne dowolny klawisz, jezeli klikne:

pokazuje pierwsza klatke
pobiera i zapisuje szostka

znowu czeka az klikne, jezeli tak sie stanie:

pokazuje druga
pobiera i zapisuje siodma

widac to opznienie ? dlaczego nie pokaze od razu siodmej

jezeli program wyswietla obraz rzeczywisty z kamerki dzieje sie dokladnie to samo, tyle ze zamiast czekac na klikniecie klawisza przez usera, program czeka 0,04 sec, a opoznienie wynosi 5 klatek, czyli 0,2 sec   0,04 * 5 = 0,2
P-68936
DejaVu
» 2012-11-10 16:34:31
Może drivery buforują klatki? Trudno powiedzieć...
P-68937
DejaVu
» 2012-11-10 16:39:50
P-68938
matka5432
Temat założony przez niniejszego użytkownika
» 2012-11-10 17:10:38
Z tego co zrozumialem to nie da rady nic z tym zrobic ? jedynie wczytac 5 klatek i pokazac nastepnaa. Ale to niestety nie przyspieszy niczego ;/
P-68941
« 1 »
  Strona 1 z 1