Приведённый код берёт картинку с веб-камеры и выводит её в 3 окна. Это очень сильно жрёт проц как на получении картинки с веб-камеры так и на её вывод в окна. В то же время программа guvcview показывает картинку с этой веб-камеры в разрешении 864x480/29fps без какого-либо заметного поедания проца. Короче, как бы побыстрее выводить массив байт? Пока интересует только линуксовое решение, хотя весь код пишется кросс-платформенно, даже под CMake.
В данный момент выводимая картинка - массив байт RGBRGBRGBRGBRGB... Его будет требоваться модифицировать и выводить. Сейчас к нему есть доступ через (char*)(frame->imageData). В каком формате должны будут быть данные, выводимые на экран предложенным вами быстрым способом - не суть, это всегда можно обеспечить.
Спасибо.
#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main ( void )
{
CvCapture *camera = cvCreateCameraCapture(0);
IplImage *frame = 0;
/* create a window for the video */
cvNamedWindow( "w1", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "w2", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "w3", CV_WINDOW_AUTOSIZE );
while ( 1 )
{
frame = cvQueryFrame(camera);
if ( !frame )
break;
cvShowImage("w1", frame);
cvShowImage("w2", frame);
cvShowImage("w3", frame);
cvWaitKey(33);
}
return 0;
}