Problem jest następujący Chcę odczytać plik wideo z dysku i przekształcenia jej każdą klatkę w odcieniach szarości i zapisać go do nowego pliku wideo Używam następujący kod do zrobienia więcOpenCV cvWriteFrame, cvWriteToAVI
CvCapture* capture = cvCreateFileCapture("/root/tree.avi");
if (!capture){
return -1;
}
...
CvVideoWriter* writer =
cvCreateVideoWriter("/root/output.avi",CV_FOURCC('D','I','V','X'),fps,size);
...
IplImage* gray_frame = cvCreateImage(
size,
IPL_DEPTH_8U,
1
);
while((bgr_frame=cvQueryFrame(capture)) != NULL) {
cvShowImage("Example2_10", bgr_frame);
cvCvtColor(bgr_frame,gray_frame,CV_RGB2GRAY);
cvShowImage("B&W result", gray_frame);
cvWriteFrame(writer, gray_frame);
char c = cvWaitKey(10);
if(c == 27) break;
}
...
problem polega na tym, program działa poprawnie, ale nie napisać ramek do output.avi i creats tylko pusty plik output.avi sprawiedliwego 5.5KB
jeszcze jedna rzecz jest nie jestem w stanie napisać tylko gra_frame użyciu cvWriteFrame i jeśli próbuję zapisać bgr_frame, to z powodzeniem wypisze plik output.avi.
Proszę, jeśli ktoś zna rozwiązanie, daj mi znać
Rzeczywiście. Zauważ, że tej funkcji wciąż może brakować w Linuksie. tj. wideo będzie w trybie kolorowym niezależnie od tego parametru. To był błąd, który napotkałem jakiś czas temu, nie jestem pewien, czy jest on już naprawiony. – TaZ
Mogę potwierdzić, że działa to w Linuksie, po prostu sam go użyłem. – RyanfaeScotland