mirror of
https://github.com/lostjared/Acid.Cam.v2.Qt.git
synced 2025-12-13 18:30:02 +01:00
168 lines
5.5 KiB
C++
Executable File
168 lines
5.5 KiB
C++
Executable File
|
|
/*
|
|
* Acid Cam v2 - Qt/OpenCV Edition
|
|
* written by Jared Bruni ( http://lostsidedead.com )
|
|
* (C) 2017 GPL
|
|
*/
|
|
|
|
|
|
#include "new_dialog.h"
|
|
#include "main_window.h"
|
|
|
|
|
|
CaptureCamera::CaptureCamera(QWidget *parent) : QDialog(parent) {
|
|
setGeometry(100, 100, 290, 120);
|
|
setFixedSize(290, 120);
|
|
setWindowTitle(tr("Capture from Webcam"));
|
|
setWindowIcon(QPixmap(":/images/icon.png"));
|
|
createControls();
|
|
}
|
|
|
|
void CaptureCamera::createControls() {
|
|
QLabel *res = new QLabel(tr("Resolution: "), this);
|
|
res->setGeometry(10, 10, 75, 20);
|
|
combo_res = new QComboBox(this);
|
|
combo_res->setGeometry(85, 10, 200, 25);
|
|
combo_res->addItem("640x480 (SD)");
|
|
combo_res->addItem("1280x720 (HD)");
|
|
combo_res->addItem("1920x1080 (Full HD)");
|
|
QLabel *dev = new QLabel(tr("Device: "), this);
|
|
dev->setGeometry(10, 35, 50, 20);
|
|
combo_device = new QComboBox(this);
|
|
combo_device->setGeometry(85, 35, 200, 25);
|
|
for(int i = 0; i < 10; ++i) {
|
|
QString s;
|
|
QTextStream stream(&s);
|
|
stream << i;
|
|
combo_device->addItem(*stream.string());
|
|
}
|
|
btn_select = new QPushButton(tr("Save Directory"), this);
|
|
btn_select->setGeometry(10, 65, 100, 20);
|
|
output_dir = new QLineEdit("", this);
|
|
output_dir->setGeometry(110, 65, 175, 20);
|
|
output_dir->setReadOnly(true);
|
|
chk_record = new QCheckBox(tr("Record"), this);
|
|
chk_record->setGeometry(10, 95, 70, 20);
|
|
btn_start = new QPushButton(tr("Start"), this);
|
|
btn_start->setGeometry(185, 95, 100, 20);
|
|
connect(btn_start, SIGNAL(clicked()), this, SLOT(btn_Start()));
|
|
connect(btn_select, SIGNAL(clicked()), this, SLOT(btn_Select()));
|
|
|
|
video_type = new QComboBox(this);
|
|
video_type->setGeometry(80, 90, 90, 25);
|
|
video_type->addItem("MOV");
|
|
video_type->addItem("AVI");
|
|
}
|
|
|
|
void CaptureCamera::setParent(AC_MainWindow *p) {
|
|
win_parent = p;
|
|
}
|
|
|
|
void CaptureCamera::btn_Select() {
|
|
|
|
QString def_path = "";
|
|
#if defined(__linux__)
|
|
def_path = "";
|
|
#elif defined(__APPLE__)
|
|
def_path = "/Users";
|
|
#elif defined(_WIN32)
|
|
def_path = "C:\\";
|
|
#endif
|
|
|
|
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),def_path,QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
|
|
|
if(dir != "") {
|
|
output_dir->setText(dir);
|
|
}
|
|
}
|
|
|
|
void CaptureCamera::btn_Start() {
|
|
|
|
int vtype;
|
|
vtype = video_type->currentIndex();
|
|
|
|
if(output_dir->text().length() > 0) {
|
|
if(win_parent->startCamera(combo_res->currentIndex(), combo_device->currentIndex(), output_dir->text(), chk_record->isChecked(), vtype)) {
|
|
hide();
|
|
|
|
} else {
|
|
QMessageBox::information(this, tr("Could not open Capture device"), tr("Make sure you Webcam is pluged in. If you have more than one Webcam use the proper device index."));
|
|
}
|
|
} else {
|
|
QMessageBox::information(this, tr("Error please fill out Save Directory"), tr("Could not create Capture device requires Save Directory"));
|
|
}
|
|
}
|
|
|
|
CaptureVideo::CaptureVideo(QWidget *parent) : QDialog(parent) {
|
|
setGeometry(100, 100, 330, 100);
|
|
setFixedSize(330, 100);
|
|
setWindowTitle(tr("Capture from Video"));
|
|
setWindowIcon(QPixmap(":/images/icon.png"));
|
|
createControls();
|
|
}
|
|
|
|
void CaptureVideo::createControls() {
|
|
btn_setedit = new QPushButton(tr("Source File"), this);
|
|
btn_setedit->setGeometry(10, 10, 110, 20);
|
|
edit_src = new QLineEdit(this);
|
|
edit_src->setGeometry(120, 10, 200, 20);
|
|
edit_src->setReadOnly(true);
|
|
btn_setout = new QPushButton(tr("Set Output"), this);
|
|
btn_setout->setGeometry(10, 30, 110, 20);
|
|
edit_outdir = new QLineEdit(this);
|
|
edit_outdir->setGeometry(120, 30, 200, 20);
|
|
edit_outdir->setReadOnly(true);
|
|
btn_start = new QPushButton(tr("Start"), this);
|
|
btn_start->setGeometry(10, 60, 100, 20);
|
|
chk_record = new QCheckBox(tr("Record"), this);
|
|
chk_record->setGeometry(110, 60, 80, 20);
|
|
|
|
video_type = new QComboBox(this);
|
|
video_type->setGeometry(180, 55, 120, 25);
|
|
video_type->addItem("MOV");
|
|
video_type->addItem("AVI");
|
|
connect(btn_setedit, SIGNAL(clicked()), this, SLOT(btn_SetSourceFile()));
|
|
connect(btn_setout, SIGNAL(clicked()), this, SLOT(btn_SetOutputDir()));
|
|
connect(btn_start, SIGNAL(clicked()), this, SLOT(btn_Start()));
|
|
}
|
|
|
|
void CaptureVideo::setParent(AC_MainWindow *p) {
|
|
win_parent = p;
|
|
}
|
|
|
|
void CaptureVideo::btn_SetSourceFile() {
|
|
QString def_path = "";
|
|
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Video"), def_path, tr("Video Files (*.avi *.mov *.mp4 *.mkv)"));
|
|
if(fileName != "")
|
|
edit_src->setText(fileName);
|
|
}
|
|
|
|
void CaptureVideo::btn_SetOutputDir() {
|
|
QString def_path = "";
|
|
QString dir = QFileDialog::getExistingDirectory(this, tr("Set Output Directory"),def_path,QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
|
if(dir != "")
|
|
edit_outdir->setText(dir);
|
|
}
|
|
|
|
void CaptureVideo::btn_Start() {
|
|
if(edit_src->text().length() <= 0) {
|
|
QMessageBox::information(this, tr("No Input"), tr("Please Select a Video File"));
|
|
return;
|
|
}
|
|
if(edit_outdir->text().length() <= 0) {
|
|
QMessageBox::information(this, tr("No Output"), tr("Please Select Output Directory"));
|
|
return;
|
|
}
|
|
|
|
int num;
|
|
num = video_type->currentIndex();
|
|
|
|
if(win_parent->startVideo(edit_src->text(), edit_outdir->text(), chk_record->isChecked(), num)) {
|
|
hide();
|
|
} else {
|
|
QMessageBox::information(this, tr("Could not open file"), tr("Could not open video file, an error has occured"));
|
|
}
|
|
}
|
|
|
|
|