Qt opencv capture cam

Fórumok

Üdv!

Van valakinek egy egyszerű Qt + opencv webcam capture alkalmazás mintája?
Tehát ami egy webcam (/dev/video0) képét megjeleníti a formon.

Innen letöltöttem a zip-et:
https://github.com/mtav/MinotaurMBEDLabyrinthSolver/archive/master.zip

Fedora 21 (opencv-2.4.9-3.fc21.x86_64) alatt fent van az opencv és opencv-devel.

A QtCvExample-t pl. nem sikerült lefordítanom:

/usr/include/c++/4.9.2/cmath:91: error: conflicting declaration of C function 'long double std::abs(long double)'
abs(long double __x)
^

Szóval van valakinek egy egyszerű működő mintája? Csak annyi, hogy a webcam képe megjelenjen a formon.

Hozzászólások

https://www.youtube.com/watch?v=0ONxIy8itRA
Ezen a videon levő kód működik is RPi-n, de kicsit szaggat, mert egy timerrel teszi ki a képet egy label-re:


# "mainwindow.h"
...
private:
Ui::MainWindow *ui;

// opencv capture
cv::VideoCapture capWebcam;

cv::Mat matOriginal;

QImage qimgOriginal;

QTimer* tmrTimer;
...

# --------------------------------------------------
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

// webcam ***********************************************************
capWebcam.open(0);
if ( capWebcam.isOpened() == false ) {
ui->plainTextEdit->appendPlainText("error: cannot access webcam...");
return;
}

// set camera resolution
//capWebcam.set(CV_CAP_PROP_FRAME_WIDTH,320);
//capWebcam.set(CV_CAP_PROP_FRAME_HEIGHT,240);

tmrTimer = new QTimer(this);
connect( tmrTimer, SIGNAL(timeout()), this, SLOT(processFrameAndUpdateGUI()) );
tmrTimer->start(20);

}

void MainWindow::processFrameAndUpdateGUI()
{
capWebcam.read(matOriginal);
cv::resize(matOriginal, matOriginal, cv::Size(320,240), 0, 0, cv::INTER_CUBIC );

if ( matOriginal.empty() == true ) return;
QImage qimgOriginal( (uchar*)matOriginal.data, matOriginal.cols, matOriginal.rows, matOriginal.step, QImage::Format_RGB888 );
ui->captureLabel->setPixmap(QPixmap::fromImage(qimgOriginal));

}

Hogyan lehetne a cam képét normálisan megjeleníteni szerintetek?

Elvileg ha openGL-t használsz, akkor kapsz egy kis 3D teljesítményt, és mondjuk textúraként rárakhatod valamire a képet. Itt van egy ötlet hozzá:

http://www.alecjacobson.com/weblog/?p=1875

Én az RPi-ről streamelem a képet máshova, szóval nem tudom hogy ez az openGL téma megy-e rajta; de hátha :)