AbulEduCameraV1¶
La classe AbulEduCameraV1 permet de capturer les images provenant d'une caméra (webcam)
Installation¶
L'installation de la classe AbulEduCameraV1 se fait dans le dossier lib de votre logiciel, par exemple
git submodule add http://redmine.abuledu.org/ryxeo/leterrier-developpeurs/abuleducamerav1.git src/lib/abuleducamerav1
Mainteneur de la lib:
git clone ssh://gitolite3@redmine.abuledu.org/repositories-redmine/ryxeo/leterrier-developpeurs/abuleducamerav1.git
Cette classe nécessite l'utilisation de opencv2
Modification du fichier.pro¶
Pensez à modifier votre fichier .pro pour ajouter cette nouvelle lib
#AbulEduCameraV1 include(lib/abuleducamera/abuleducamera.pri)
Utilisation¶
La capture des images par la webcam se fait dans un thread séparé lancé par la classe AbulEduCameraControllerV1, on ne s'en soucie donc pas ;-)
Une implémentation minimum possible est celle-ci :
// A utiliser dans la classe appelante if(!m_camera) { m_camera = new AbulEduCameraV1(this); connect(m_camera, SIGNAL(signalFullImageReady(QImage)), this, SLOT(slotQImageFromCamReceived(QImage))); m_camera->abeCameraInitCamera(0); m_camera->abeCameraStartCapture(); } void UtilitaireMainWindow::slotQImageFromCamReceived(QImage image) { ui->lbCameraView->setPixmap(QPixmap::fromImage(image).scaled(ui->lbCameraView->size(),Qt::KeepAspectRatio)); m_camera->slotCameraControllerReadyToGetNewImage(true); }
Plus loin, la capture sera lancée en faisant un simple :
m_camera->abeCameraStartCapture();
De même, pour arrêter la caméra, on fera :
m_camera->abeCameraStopCapture();
(!) Il est nécessaire de dire au contrôleur de la caméra que l'on est prêt à recevoir une nouvelle image. Ceci évite de recevoir trop d'images qui ne pourront être traitées, et de surcharger le processeur.
m_camera->slotCameraControllerReadyToGetNewImage(true);
(!) Cette classe est encore en développement...
Démo¶
Le fichier ci-dessous est un exemple d'utilisation des classes AbulEduCameraV1 et AbulEduCameraWidgetV1