Bonjour à tous,
Je travaille sur un projet d'acquisition vidéo avec une carte EURESYS de la série Picolo.
Je développe sous l'environnement Qt Creator (basé sur Qt 4.8.3) avec le compilateur MS VC++ 10 et j'utilise la bibliothèque eVision 6.7.1.
Pour ce qui est de la configuration de la carte et de l'acquisition des images, il n'y a pas de problèmes. Avec OpenCV j'arrive à convertir l'EImage en Mat et à l'afficher dans une fenêtre secondaire.
Par contre avec Qt c'est une autre histoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void MainWindow::ProcessingCallback(Channel &Ch, SignalInfo &Info) { try { // Mise à jour de l'EImage à partir des données acquises UpdateImageConfig(*Info.Surf, EImgSrc); // Conversion de l'EImage en Mat Mat cvImg(EImgSrc.GetHeight(), EImgSrc.GetWidth(), CV_8UC3, EImgSrc.GetGenericImagePtr()); // Affichage de l'image imshow( "Display window", cvImg ); } catch (Euresys::MultiCam::Exception &e) { // Gestion des exceptions... } }
De la même manière j'ai utilisé le code suivant:
Mais dans ce cas pas d'affichage de l'image et la sortie d'application m'indique en boucle le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void MainWindow::ProcessingCallback(Channel &Ch, SignalInfo &Info) { try { // Mise à jour de l'EImage à partir des données acquises UpdateImageConfig(*Info.Surf, EImgSrc); // Conversion de l'EImage en QImage QImage imaq((const uchar*)EImgSrc.GetGenericImagePtr(), EImgSrc.GetWidth(), EImgSrc.GetHeight(), EImgSrc.GetBitsPerRow(), QImage::Format_RGB888); // Affichage de l'image QPainter painter(this); painter.drawImage(QPoint(0, 0), imaq); } catch (Euresys::MultiCam::Exception &e) { // Gestion des exceptions... } }
Pourriez-vous me donner quelques conseils?
Code : Sélectionner tout - Visualiser dans une fenêtre à part QPainter::begin: Paint device returned engine == 0, type: 1
D'avance merci!
![]()
Partager