El problema es el siguiente quiero leer un archivo de vídeo desde el disco y convertir su cada cuadro en escala de grises y escribirlo en nuevo archivo de vídeo estoy usando siguiente código para hacerloOpenCV 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;
}
...
El problema es que el programa funciona muy bien, pero no puede escribir tramas para output.avi y creats archivo output.avi solamente en blanco de tan sólo 5,5 KB
Una cosa más es que soy incapaz de escribir solamente gra_frame usando cvWriteFrame, y si intento escribir bgr_frame, escribe el archivo output.avi con éxito.
Por favor si alguien sabe la solución, que me haga saber
De hecho. Tenga en cuenta que esta funcionalidad aún puede faltar en Linux. es decir, el video estará en modo de color independientemente de ese parámetro. Ese fue un error que encontré hace un tiempo, no estoy seguro si ya está arreglado. – TaZ
Puedo confirmar que esto funciona en Linux, solo lo uso ahora. – RyanfaeScotland