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
ezt nézted:
https://www.youtube.com/watch?v=0ONxIy8itRA
még nem, köszönöm!
amit először írtál Qt camera project sem fordul. A #include < QCamera > nem találja.
Pedig a qt5-qtmultimedia-devel rpm csomag fent van. :(
A QtCreator examples fülén a Camera Example alkalmazásra gondolsz ? Azt töröltem ,mert nem opencv. Egyébként most kipróbáltam és nálam az lefordul, működik.
Ubuntu 15.04 + Qt 5.4.0 innen telepítve :
http://download.qt.io/official_releases/qt/
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 :)