[ui] reading, writing works

This commit is contained in:
Jan Grewe 2020-03-13 17:40:51 +01:00
parent f68dc517ae
commit 6a0570666e
6 changed files with 32 additions and 6 deletions

View File

@ -10,7 +10,7 @@ void Grabber::run() {
Pylon::CInstantCamera *cam = camera->getCamera(); Pylon::CInstantCamera *cam = camera->getCamera();
cam->StartGrabbing(); cam->StartGrabbing();
while (!stop_request) { while (!stop_request) {
camera->frameRate(25); camera->frameRate(50);
MyImage img; MyImage img;
cam->RetrieveResult( 5000, frame, Pylon::TimeoutHandling_ThrowException); cam->RetrieveResult( 5000, frame, Pylon::TimeoutHandling_ThrowException);
img.setFrame(frame); img.setFrame(frame);

View File

@ -41,8 +41,9 @@ PylonRecorder::PylonRecorder(QWidget *parent)
scrollArea->setVisible(false); scrollArea->setVisible(false);
setCentralWidget(scrollArea); setCentralWidget(scrollArea);
pylon = new PylonWrapper(); pylon = new PylonWrapper();
buffer = new ImageBuffer(); buffer = new ImageBuffer(1000);
grabber = new Grabber(pylon, buffer); grabber = new Grabber(pylon, buffer);
writer = new Writer(buffer);
createActions(); createActions();
updateActions(); updateActions();
@ -69,6 +70,7 @@ PylonRecorder::~PylonRecorder(){
delete pylon; delete pylon;
delete buffer; delete buffer;
delete grabber; delete grabber;
delete writer;
} }
bool PylonRecorder::loadFile(const QString &fileName) { bool PylonRecorder::loadFile(const QString &fileName) {
@ -384,17 +386,32 @@ void PylonRecorder::disconnectCamera() {
} }
void PylonRecorder::startRecording() { void PylonRecorder::startRecording() {
VideoSpecs specs;
specs.fps = 25;
specs.filename = "Test.mp4";
ImageSettings settings = pylon->getImageSettings();
specs.width = static_cast<uint32_t>(settings.width);
specs.height= static_cast<uint32_t>(settings.height);
specs.pixelType = settings.pixelType;
specs.orientation = settings.orientation;
specs.quality = 95;
writer->setVideoSpecs(specs);
buffer->clear(); buffer->clear();
grabber->start(); grabber->start();
writer->start();
grabbing = true; grabbing = true;
preassureTimer->start(50);
frameTimer->start(50);
updateActions(); updateActions();
preassureTimer->start(25);
frameTimer->start(100);
} }
void PylonRecorder::stopRecording() { void PylonRecorder::stopRecording() {
grabber->requestStop(); grabber->requestStop();
writer->requestStop();
grabber->wait(10000); grabber->wait(10000);
writer->wait(10000);
grabbing = false; grabbing = false;
frameTimer->stop(); frameTimer->stop();
preassureTimer->stop(); preassureTimer->stop();

View File

@ -6,6 +6,7 @@
#include "pylonwrapper.h" #include "pylonwrapper.h"
#include "imagebuffer.h" #include "imagebuffer.h"
#include "grabber.h" #include "grabber.h"
#include "writer.h"
#include <QImage> #include <QImage>
#if defined(QT_PRINTSUPPORT_LIB) #if defined(QT_PRINTSUPPORT_LIB)
@ -78,6 +79,7 @@ private:
PylonWrapper *pylon; PylonWrapper *pylon;
ImageBuffer *buffer; ImageBuffer *buffer;
Grabber *grabber; Grabber *grabber;
Writer *writer;
bool grabbing; bool grabbing;
QPalette progressPalette; QPalette progressPalette;

View File

@ -65,8 +65,11 @@ ImageSettings PylonWrapper::getImageSettings() {
Pylon::CIntegerParameter width( camera->GetNodeMap(), "Width"); Pylon::CIntegerParameter width( camera->GetNodeMap(), "Width");
Pylon::CIntegerParameter height( camera->GetNodeMap(), "Height"); Pylon::CIntegerParameter height( camera->GetNodeMap(), "Height");
Pylon::CEnumParameter pixelFormat( camera->GetNodeMap(), "PixelFormat"); Pylon::CEnumParameter pixelFormat( camera->GetNodeMap(), "PixelFormat");
Pylon::CPixelTypeMapper pixelTypeMapper(&pixelFormat);
settings.pixelType = pixelTypeMapper.GetPylonPixelTypeFromNodeValue(pixelFormat.GetIntValue());
settings.width = width.GetValue(); settings.width = width.GetValue();
settings.height = height.GetValue(); settings.height = height.GetValue();
settings.orientation = Pylon::EImageOrientation::ImageOrientation_TopDown;
} }
return settings; return settings;
} }

View File

@ -8,6 +8,8 @@
struct ImageSettings { struct ImageSettings {
int64_t width = 0; int64_t width = 0;
int64_t height = 0; int64_t height = 0;
Pylon::EPixelType pixelType;
Pylon::EImageOrientation orientation;
}; };
class PylonWrapper class PylonWrapper

View File

@ -7,14 +7,16 @@ HEADERS = \
imagebuffer.h \ imagebuffer.h \
myimage.h \ myimage.h \
pylonrecorder.h \ pylonrecorder.h \
pylonwrapper.h pylonwrapper.h \
writer.h
SOURCES = \ SOURCES = \
grabber.cpp \ grabber.cpp \
imagebuffer.cpp \ imagebuffer.cpp \
myimage.cpp \ myimage.cpp \
pylonrecorder.cpp \ pylonrecorder.cpp \
pylonwrapper.cpp \ pylonwrapper.cpp \
main.cpp main.cpp \
writer.cpp
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/widgets/imageviewer target.path = $$[QT_INSTALL_EXAMPLES]/widgets/widgets/imageviewer