diff --git a/README.md b/README.md index 855f956..a1b2960 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,15 @@ To minimize wrist strain when labeling, I adopted the method **"twice left butto ![endimage](https://user-images.githubusercontent.com/35001605/47704336-a6528180-dc66-11e8-8551-3ecb612b7353.PNG) +## USAGE AND OPTIONS +``` +./YoloLabel [dataset dir] [class file names] +# Example +./YoloLabel ../project/dataset/objects/frames ../project/dataset/objects/obj_names.txt + +``` + + ## SHORTCUTS | Key | Action | diff --git a/main.cpp b/main.cpp index 29e1450..0094c74 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; + w.set_args(argc, argv); w.show(); return a.exec(); } diff --git a/mainwindow.cpp b/mainwindow.cpp index 34cccc4..846f951 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -41,6 +41,20 @@ MainWindow::~MainWindow() delete ui; } +void MainWindow::set_args(int argc, char *argv[]) +{ + if (argc > 1) { + QString dir = QString::fromLocal8Bit(argv[1]); + get_files(dir); + if (argc > 2) { + QString obj_file = QString::fromLocal8Bit(argv[2]); + load_label_list_data(obj_file); + } + init(); + } +} + + void MainWindow::on_pushButton_open_files_clicked() { bool bRetImgDir = false; @@ -295,20 +309,9 @@ void MainWindow::pjreddie_style_msgBox(QMessageBox::Icon icon, QString title, QS msgBox.exec(); } -void MainWindow::open_img_dir(bool& ret) +bool MainWindow::get_files(QString imgDir) { - pjreddie_style_msgBox(QMessageBox::Information,"Help", "Step 1. Open Your Data Set Directory"); - - QString opened_dir; - if(m_imgDir.size() > 0) opened_dir = m_imgDir; - else opened_dir = QDir::currentPath(); - - QString imgDir = QFileDialog::getExistingDirectory( - nullptr, - tr("Open Dataset Directory"), - opened_dir, - QFileDialog::ShowDirsOnly); - + bool value = false; QDir dir(imgDir); QCollator collator; collator.setNumericMode(true); @@ -319,20 +322,36 @@ void MainWindow::open_img_dir(bool& ret) std::sort(fileList.begin(), fileList.end(), collator); - if(fileList.empty()) - { - ret = false; - pjreddie_style_msgBox(QMessageBox::Critical,"Error", "This folder is empty"); - } - else + if(!fileList.empty()) { - ret = true; + value = true; m_imgDir = imgDir; m_imgList = fileList; for(QString& str: m_imgList) str = m_imgDir + "/" + str; } + return value; +} + +void MainWindow::open_img_dir(bool& ret) +{ + pjreddie_style_msgBox(QMessageBox::Information,"Help", "Step 1. Open Your Data Set Directory"); + + QString opened_dir; + if(m_imgDir.size() > 0) opened_dir = m_imgDir; + else opened_dir = QDir::currentPath(); + + QString imgDir = QFileDialog::getExistingDirectory( + nullptr, + tr("Open Dataset Directory"), + opened_dir, + QFileDialog::ShowDirsOnly); + + + ret = get_files(imgDir); + if (!ret) + pjreddie_style_msgBox(QMessageBox::Critical,"Error", "This folder is empty"); } void MainWindow::open_obj_file(bool& ret) diff --git a/mainwindow.h b/mainwindow.h index f958522..dd7cf62 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -20,6 +20,8 @@ class MainWindow : public QMainWindow public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); + void set_args(int argc, char *argv[]); + private slots: void on_pushButton_open_files_clicked(); @@ -79,9 +81,11 @@ private slots: int m_objIndex; int m_lastDeletedImgIndex; int m_lastLabeledImgIndex; + bool get_files(QString imgDir); protected: void wheelEvent(QWheelEvent *); + }; #endif // MAINWINDOW_H