Üdv!
A kiindulás ebből az app-ból van, ami v4l-ot használ.
A "Start Capture" gombra indul a capture. A "Stop Capture" esetén megáll a capturing és a formon ott marad az utolsó képkocka.
Ezt a képet (képkockát) szeretném elmenteni fájlba (jpg,png mindegy).
Van ötlete valakinek, hogy merre induljak el?
--
G.
- 4505 megtekintés
Hozzászólások
Ezzel próbálkozom... van egy
videovidget.cpp:
#include "videowidget.h"
videowidget::videowidget(QWidget *parent) :
QWidget(parent)
{
setAutoFillBackground(true);
}
void videowidget::paintEvent(QPaintEvent *event) {
try{
QPainter painter(this);
if(!img.isNull()){
painter.drawImage(QPoint(0,0), img);
}
}catch(...){}
}
videowidget.h:
#ifndef VIDEOWIDGET_H
#define VIDEOWIDGET_H
#include < QWidget >
#include < QPainter >
class videowidget : public QWidget
{
Q_OBJECT
public:
explicit videowidget(QWidget *parent = 0);
QImage img;
protected:
void paintEvent(QPaintEvent *event);
signals:
public slots:
};
#endif // VIDEOWIDGET_H
A mainwindow.cpp-ban van egy onStopCapture(), ami tökéletes lenne:
#include "mainwindow.h"
#include < QString >
#include < QImage >
...
void MainWindow::onStopCapture()
{
t->devam=false;
//QImage img;
QString savepath = "/path/to/pic1.png";
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
video->img.save(&buffer, &savepath, "PNG");
}
Erre azt mondja a fordító:
mainwindow.cpp:79: error: no matching function for call to 'QImage::save(QBuffer*, QString*, const char [4])' video->img.save(&buffer, &savepath, "PNG"); --------------------------------------------------------------------^
Mit rontottam el?
--
G.
- A hozzászóláshoz be kell jelentkezni
http://qt-project.org/doc/qt-4.8/qimage.html
[ a save ugy nem lesz jo... ]
- A hozzászóláshoz be kell jelentkezni
A savepath nélkül lefordul, de milyen néven menti ilyenkor?
--
G.
- A hozzászóláshoz be kell jelentkezni
Kéne egy kicsit képezned magad C-ből/C++-ból. Miért csinálsz pl. mutatót a savepath-ból?
Miért nem értelmezed a hibaüzenetet?
- A hozzászóláshoz be kell jelentkezni
A mutatók kicsit megkevernek néha... :) Fejlesztem magam, ahogy tudom.
De elnézést kérek, mert elnéztem:
QString savepath = "/path/to/pic1.png";
video->img.save(savepath, "PNG", -1);
Kevertem a két fv-t:
bool QImage::save ( const QString & fileName, const char * format = 0, int quality = -1 ) const
bool QImage::save ( QIODevice * device, const char * format = 0, int quality = -1 ) const
--
G.
- A hozzászóláshoz be kell jelentkezni
Qt nem használ exception-öket, sőt újabban kikapcsolt exception-ökkel is fordítják, szóval azt a try-catch-t törölheted nyugodtan...
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Kivételkezelés nélkül..? :o
--
G.
- A hozzászóláshoz be kell jelentkezni
Igen, anélkül. Az is lehet, hogy már a qmake is -fno-exceptions kapcsolóval fordít, de erre nem vennék mérget...
Mindenesetre Qt kód nem fog neked exception-nal hibát jelezni, és ha a te kódod dobja, akkor is nagy az esély rá, hogy összecsinálja magát. (A signal-slot illetve az event system deklaráltan nem exception safe.)
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni