generalmente si visualizzano webcam o movimento video in finestre OpenCV con:OpenCV: come visualizzare l'acquisizione della webcam in un'applicazione Windows Form?
CvCapture* capture = cvCreateCameraCapture(0);
cvNamedWindow("title", CV_WINDOW_AUTOSIZE);
cvMoveWindow("title",x,y);
while(1)
{
frame = cvQueryFrame(capture);
if(!frame)
{
break;
}
cvShowImage("title", frame);
char c = cvWaitKey(33);
if(c == 27)
{
break;
}
}
ho cercato di utilizzare pictureBox che è riuscito a visualizzare l'immagine in finestre formare con questo:
pictureBox1->Image = gcnew System::Drawing::Bitmap(image->width,image->height,image->widthStep,System::Drawing::Imaging::PixelFormat::Undefined, (System::IntPtr) image-> imageData);
ma quando im cercando di visualizzare l'immagine catturata dal video funziona solito, ecco la fonte:
CvCapture* capture = cvCreateCameraCapture(0);
while(1)
{
frame = cvQueryFrame(capture);
if(!frame)
{
break;
}
pictureBox1->Image = gcnew System::Drawing::Bitmap(frame->width,frame->height,frame->widthStep,System::Drawing::Imaging::PixelFormat::Undefined, (System::IntPtr) frame-> imageData);
char c = cvWaitKey(33);
if(c == 27)
{
break;
}
}
c'è comunque di utilizzare Windows Form invece finestra OpenCV s per mostrare video o webcam?
o c'è qualcosa di sbagliato nel mio codice? grazie per il vostro aiuto .. :)
L'uscita video simultanea e l'elaborazione dell'immagine di sfondo delle stesse informazioni influisce in modo significativo sulle prestazioni? –
Non sono sicuro di aver capito la tua domanda correttamente. Per quanto mi ricordo, l'immagine catturata non viene copiata direttamente nel buffer dello schermo. Tuttavia VideoInput è basato su DirectShow, che implica due cose: è molto veloce, ed è un PITA da compilare (è necessario ottenere l'implementazione DirectShow corrispondente da Microsoft). L'ultima volta che ho provato, ho dovuto ottenere una versione precedente della libreria DirectShow. Tuttavia, nel download viene fornita una versione compilata della libreria VideoInput. –