mirror of
https://github.com/lostjared/Acid.Cam.v2.Qt.git
synced 2025-12-14 19:00:01 +01:00
added png output in video mode
This commit is contained in:
@@ -1084,7 +1084,7 @@ bool AC_MainWindow::startCamera(int res, int dev, const QString &outdir, bool re
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AC_MainWindow::startVideo(const QString &filename, const QString &outdir, bool record, int type) {
|
bool AC_MainWindow::startVideo(const QString &filename, const QString &outdir, bool record, bool png_record, int type) {
|
||||||
programMode = MODE_VIDEO;
|
programMode = MODE_VIDEO;
|
||||||
controls_stop->setEnabled(true);
|
controls_stop->setEnabled(true);
|
||||||
controls_pause->setEnabled(true);
|
controls_pause->setEnabled(true);
|
||||||
@@ -1179,7 +1179,23 @@ bool AC_MainWindow::startVideo(const QString &filename, const QString &outdir, b
|
|||||||
out_stream << "Now recording to: " << output_name << "\nResolution: " << res_w << "x" << res_h << " FPS: " << video_fps << "\n";
|
out_stream << "Now recording to: " << output_name << "\nResolution: " << res_w << "x" << res_h << " FPS: " << video_fps << "\n";
|
||||||
Log(out_s);
|
Log(out_s);
|
||||||
}
|
}
|
||||||
playback->setVideo(capture_video,writer,recording);
|
|
||||||
|
static int output_index = 1;
|
||||||
|
QString dpath;
|
||||||
|
QTextStream stream1(&dpath);
|
||||||
|
QString path = filename.mid(filename.lastIndexOf("/"));
|
||||||
|
stream1 << outdir << "/" << path << "_png." << output_index;
|
||||||
|
|
||||||
|
QDir dir(dpath);
|
||||||
|
if(!dir.exists()) {
|
||||||
|
dir.mkpath(dpath);
|
||||||
|
std::cout << "mkpath: " << dpath.toStdString().c_str() << "\n";
|
||||||
|
} else {
|
||||||
|
std::cout << "directory exisits...\n";
|
||||||
|
}
|
||||||
|
++output_index;
|
||||||
|
playback->setPngPath(dpath.toStdString());
|
||||||
|
playback->setVideo(capture_video,writer,recording, png_record);
|
||||||
playback->Play();
|
playback->Play();
|
||||||
disp->show();
|
disp->show();
|
||||||
#ifndef DISABLE_JOYSTICK
|
#ifndef DISABLE_JOYSTICK
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public:
|
|||||||
~AC_MainWindow();
|
~AC_MainWindow();
|
||||||
void Log(const QString &s);
|
void Log(const QString &s);
|
||||||
bool startCamera(int res, int dev, const QString &outdir, bool record, int type);
|
bool startCamera(int res, int dev, const QString &outdir, bool record, int type);
|
||||||
bool startVideo(const QString &filename, const QString &outdir, bool record, int type);
|
bool startVideo(const QString &filename, const QString &outdir, bool record,bool png_record, int type);
|
||||||
QListWidget /**filters,*/ *custom_filters;
|
QListWidget /**filters,*/ *custom_filters;
|
||||||
QPushButton *btn_add, *btn_remove, *btn_moveup, *btn_movedown,*btn_load, *btn_save, *btn_sub, *btn_clr;
|
QPushButton *btn_add, *btn_remove, *btn_moveup, *btn_movedown,*btn_load, *btn_save, *btn_sub, *btn_clr;
|
||||||
QTextEdit *log_text;
|
QTextEdit *log_text;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ void CaptureCamera::btn_Start() {
|
|||||||
|
|
||||||
CaptureVideo::CaptureVideo(QWidget *parent) : QDialog(parent) {
|
CaptureVideo::CaptureVideo(QWidget *parent) : QDialog(parent) {
|
||||||
setGeometry(100, 100, 330, 100);
|
setGeometry(100, 100, 330, 100);
|
||||||
setFixedSize(330, 100);
|
setFixedSize(330, 120);
|
||||||
setWindowTitle(tr("Capture from Video"));
|
setWindowTitle(tr("Capture from Video"));
|
||||||
setWindowIcon(QPixmap(":/images/icon.png"));
|
setWindowIcon(QPixmap(":/images/icon.png"));
|
||||||
createControls();
|
createControls();
|
||||||
@@ -114,9 +114,11 @@ void CaptureVideo::createControls() {
|
|||||||
edit_outdir->setGeometry(120, 30, 200, 20);
|
edit_outdir->setGeometry(120, 30, 200, 20);
|
||||||
edit_outdir->setReadOnly(true);
|
edit_outdir->setReadOnly(true);
|
||||||
btn_start = new QPushButton(tr("Start"), this);
|
btn_start = new QPushButton(tr("Start"), this);
|
||||||
btn_start->setGeometry(10, 60, 100, 20);
|
btn_start->setGeometry(10, 60, 100, 25);
|
||||||
chk_record = new QCheckBox(tr("Record"), this);
|
chk_record = new QCheckBox(tr("Record"), this);
|
||||||
chk_record->setGeometry(110, 60, 80, 20);
|
chk_record->setGeometry(110, 60, 80, 20);
|
||||||
|
chk_png = new QCheckBox(tr("PNG"), this);
|
||||||
|
chk_png->setGeometry(110, 80, 80, 20);
|
||||||
|
|
||||||
video_type = new QComboBox(this);
|
video_type = new QComboBox(this);
|
||||||
video_type->setGeometry(180, 55, 120, 25);
|
video_type->setGeometry(180, 55, 120, 25);
|
||||||
@@ -156,10 +158,12 @@ void CaptureVideo::btn_Start() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int num;
|
int num;
|
||||||
num = video_type->currentIndex();
|
num = video_type->currentIndex();
|
||||||
|
if(win_parent->startVideo(edit_src->text(), edit_outdir->text(), chk_record->isChecked(),chk_png->isChecked(), num)) {
|
||||||
if(win_parent->startVideo(edit_src->text(), edit_outdir->text(), chk_record->isChecked(), num)) {
|
|
||||||
hide();
|
hide();
|
||||||
} else {
|
} else {
|
||||||
QMessageBox::information(this, tr("Could not open file"), tr("Could not open video file, an error has occured"));
|
QMessageBox::information(this, tr("Could not open file"), tr("Could not open video file, an error has occured"));
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public:
|
|||||||
|
|
||||||
QLineEdit *edit_src, *edit_outdir;
|
QLineEdit *edit_src, *edit_outdir;
|
||||||
QPushButton *btn_setedit, *btn_setout, *btn_start;
|
QPushButton *btn_setedit, *btn_setout, *btn_start;
|
||||||
QCheckBox *chk_record;
|
QCheckBox *chk_record, *chk_png;
|
||||||
QComboBox *video_type;
|
QComboBox *video_type;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|||||||
@@ -46,8 +46,14 @@ void Playback::Play() {
|
|||||||
start(HighPriority);
|
start(HighPriority);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Playback::setVideo(cv::VideoCapture cap, cv::VideoWriter wr, bool record) {
|
void Playback::setPngPath(std::string path) {
|
||||||
|
png_path = path;
|
||||||
|
png_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Playback::setVideo(cv::VideoCapture cap, cv::VideoWriter wr, bool record, bool rec_png) {
|
||||||
mode = MODE_VIDEO;
|
mode = MODE_VIDEO;
|
||||||
|
record_png = rec_png;
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
capture = cap;
|
capture = cap;
|
||||||
writer = wr;
|
writer = wr;
|
||||||
@@ -374,6 +380,14 @@ void Playback::run() {
|
|||||||
msleep(duration);
|
msleep(duration);
|
||||||
}
|
}
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
|
|
||||||
|
if(record_png) {
|
||||||
|
std::ostringstream stream;
|
||||||
|
stream << png_path << "/" << std::setfill('0') << std::setw(15) << png_index << ".png";
|
||||||
|
++png_index;
|
||||||
|
cv::imwrite(stream.str(), frame);
|
||||||
|
}
|
||||||
|
|
||||||
if(recording && writer.isOpened()) {
|
if(recording && writer.isOpened()) {
|
||||||
writer.write(frame);
|
writer.write(frame);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,12 @@ private:
|
|||||||
QImage img;
|
QImage img;
|
||||||
std::vector<FilterValue> current;
|
std::vector<FilterValue> current;
|
||||||
bool isPaused, isStep;
|
bool isPaused, isStep;
|
||||||
|
bool record_png;
|
||||||
|
int png_index;
|
||||||
|
std::string png_path;
|
||||||
VideoMode mode;
|
VideoMode mode;
|
||||||
int device_num;
|
int device_num;
|
||||||
|
std::string file_name_png;
|
||||||
unsigned long *frame_index;
|
unsigned long *frame_index;
|
||||||
unsigned int red, green, blue;
|
unsigned int red, green, blue;
|
||||||
unsigned int bright_, gamma_, saturation_;
|
unsigned int bright_, gamma_, saturation_;
|
||||||
@@ -57,11 +61,12 @@ public:
|
|||||||
void setRGB(int r, int g, int b);
|
void setRGB(int r, int g, int b);
|
||||||
void setColorOptions(int b, int g, int s);
|
void setColorOptions(int b, int g, int s);
|
||||||
void setColorMap(int c);
|
void setColorMap(int c);
|
||||||
|
void setPngPath(std::string path);
|
||||||
void Play();
|
void Play();
|
||||||
void Stop();
|
void Stop();
|
||||||
void Release();
|
void Release();
|
||||||
void SetFlip(bool f1, bool f2);
|
void SetFlip(bool f1, bool f2);
|
||||||
void setVideo(cv::VideoCapture cap, cv::VideoWriter writer, bool record);
|
void setVideo(cv::VideoCapture cap, cv::VideoWriter writer, bool record, bool record_png);
|
||||||
bool setVideoCamera(std::string name, int type, int device, int res, cv::VideoWriter writer, bool record);
|
bool setVideoCamera(std::string name, int type, int device, int res, cv::VideoWriter writer, bool record);
|
||||||
bool isStopped() const;
|
bool isStopped() const;
|
||||||
void run();
|
void run();
|
||||||
|
|||||||
Reference in New Issue
Block a user