Aukasz Janik
grupa 24
09.03.2012
Systemy wizyjne - Sprawozdanie
Biblioteka OpenCV
laboratorium 2
Opis działania programu:
Program po uruchomieniu i wczytaniu odpowiednich bibliotek, łączy się z
filmem/kamerą podłączoną do komputera w celu przechwycenia obrazu i wyświetlenia
go w oknie. Obraz jest wyświetlany aż do momentu przerwania tego procesu przez
użytkownika. Istnieje możliwość zapisania poszczególnych klatek odtwarzanego
obrazu poprzez wyknanie zrzutu ekranu. Istnieje możliwość zmiany rozdzielczości
wyświetlanego obrazu za pomocą suwaka. Dodatkowo zaimplementowana została
funkcja pozwalająca zapisać nagrywany fragment filmu w postaci pliku AVI.
Niestety mimo zainstalowania najnowyszch kodeków, przy próbie wykorzystania
jakichkolwiek z nich występował błąd systemowy, dlatego film nagrywany jest w
postaci nieskompresowanej.
Kod zródłowy wraz z komentarzami:
#include
#include
#include
#include
#include // wczytanie potrzebnych bibliotek
using namespace std;
char* nazwa= "obrazek.bmp"; //zmienna wskaznikowa, nazwa pliku ze zrzutem ekranu
int res; //zmienna odpowiedzialna za rozdzielczosc
CvCapture* capture = NULL; //pusty obiekt "capture"
void resolution_slider(int res) /*funkcja odpowiadajaca za
zmiane rozdzielczosci*/
{
cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH,res);
}
int main()
{
capture = cvCaptureFromCAM(CV_CAP_ANY ); //uruchomienie kamery
if( !capture ) //funkcja zabezpieczająca przed brakiem filmu
{
fprintf( stderr, "Nie masz kamery, Spilberg!" );
getchar();
return -1;
};
cvNamedWindow( "okienko", CV_WINDOW_AUTOSIZE ); /*tworzenie nowego
okna wyświetlającego obraz*/
cvCreateTrackbar ("trackbar","okienko",&res,480,resolution_slider); /*suwak do
zmiany rozdzielczosci*/
const char* filename = "dzielo.avi"; // plik wyjsciowy
double fps = 30; //Ilość klatek na sekundę
int isColor = 1; /*Flaga formatu zapisu filmu 1- kolorowy / 0- czarno-
biały*/
CvSize size =
cvSize((int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));
//Zmienna przechowująca rozmiar filmu
CvVideoWriter *writer = cvCreateVideoWriter(filename,0 ,fps,size, isColor);
//nieskompresowany zapis filmu
int nagrywaj=1; //zmienna pomocnicza przy realizacji zapisu filmu
//CvVideoWriter*writer =
//cvCreateVideoWriter(filename,CV_FOURCC('P','I','M','1'),fps,size,isColor); /*wybór
kodeku. Niestety żaden nie działa*/
while(1) //pętla wykonywana w nieskończoność
{
IplImage* frame = cvQueryFrame( capture ); //przechwycenie klatki
if( !frame ) //zabezpieczenie przed brakiem klatki
{
fprintf( stderr, "brak klatki!" );
getchar();
return -1;
}
cvShowImage( "okienko", frame ); //wyświetlenie klatki w oknie
if ((cvWaitKey(10) & 255)== 27) //przerwanie wyswietlania przy naciśnięcu ESC
break;
if ((cvWaitKey(10) & 255)== 112) /*zrzut ekranu przy naciśniecu "p" (112 w
ASCII)*/
cvSaveImage(nazwa, frame);
if ((cvWaitKey(10) & 255)==115 ) /*Zapis filmu jeśli wciśnięte 's', przerwa
po kolejnym wcisnieciu*/
nagrywaj=nagrywaj*(-1);
if (nagrywaj==(-1))
cvWriteFrame(writer, frame);
}
cvReleaseVideoWriter( &writer );
cvReleaseCapture( &capture ); //Usuniecie obiektu capture
cvDestroyWindow( "okienko" ); //Likwidacja okna "okienko"
system("pause");
return 0;
}
Zrzut ekranu dokumentujący działanie programu:
Wyszukiwarka
Podobne podstrony:
WdA Lab2 Lukasz Skrodzki
SW LAB3 LukaszJanik
SW LAB3 LukaszJanik
SW LAB1 LukaszJanik
SW LAB4 LukaszJanik
Ewangelia wg św Łukasza E lukasza16
Ewangelia wg św Łukasza E lukasza13
Ewangelia wg św Łukasza E lukasza21
Ewangelia wg św Łukasza E lukasza11
Ewangelia wg św Łukasza
sw sprawozdanie lab2 v5
sw sprawozdanie lab2 v2
Ewangelia wg św Łukasza E lukasza20
Ewangelia wg św Łukasza E lukasza1
sw sprawozdanie lab2 v4
Ewangelia wg św Łukasza E lukasza12
więcej podobnych podstron