Приведённый код берёт картинку с веб-камеры и выводит её в 3 окна. Это очень сильно жрёт проц как на получении картинки с веб-камеры так и на её вывод в окна. В то же время программа guvcview показывает картинку с этой веб-камеры в разрешении 864x480/29fps или 1280x720/29fps без какого-либо заметного поедания проца. Короче, как бы побыстрее выводить массив байт? Пока интересует только линуксовое решение, хотя весь код пишется кросс-платформенно, даже под CMake. guvcview умудряется почти без пожирания проца делать grayscale, простые эффекты.
В данный момент выводимая картинка - это массив байт 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; }
|
|