void MainWindow::on_temp_returnPressed() { if(activeCam()){ QString slotName = ui->temp->text() + "()"; int d = camui->sm->metaObject()->indexOfSlot(slotName.toStdString().c_str()); print(ui->temp->text(), CMD); if(d < 0) { print(ui->temp->text() + QString(" - no such command"), WARNING); return; } camui->sm->commandList.push_back(d); qDebug()<<"mainWin camui: "<<camui->sm->commandList.size(); // camui->sm->kernel = k2D.kernel; } /******************if image***************/ if(activeMdiChild()){ CvGlWidget *actCV = activeMdiChild(); this->sm->inIm = actCV->cvImage; QString slotName = ui->temp->text() + "()"; int d = this->sm->metaObject()->indexOfSlot(slotName.toStdString().c_str()); QMetaMethod method = this->sm->metaObject()->method(d); method.invoke(sm); actCV->showImage(actCV->cvImage); } }
void MainWindow::on_actionHistogram_triggered() { showHistogram =!showHistogram; if(showHistogram){ if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); histogramWindow->buildHistogram(actCV->histo, actCV->statistics, actCV->hmax); // ui->mdiArea->addSubWindow(histogramWindow); histogramWindow->show(); ui->actionHistogram->setChecked(true); // qDebug()<<"opened"; } else { histogramWindow->close(); ui->actionHistogram->setChecked(false); // if(QMdiSubWindow *activeSubWindow = ui->mdiArea->activeSubWindow()) // if(qobject_cast<ExplorerHisto *>(activeSubWindow->widget())) return; //////////////////////////////////////////// ui->mdiArea->setActiveSubWindow(qobject_cast<QMdiSubWindow *>(histogramWindow)); // ui->mdiArea->currentSubWindow()-> /////////////////////////////////////////// ui->mdiArea->removeSubWindow(qobject_cast<ExplorerHisto *>(histogramWindow)); // qDebug()<<ui->mdiArea->currentSubWindow(); // qobject_cast<ExplorerHisto *>(histogramWindow); // qDebug()<<"closed"; } }
void MainWindow::applyFilter(int i) { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); if(actCV->cvImage.data == NULL) return; k2D.filter(actCV->cvImage, i); actCV->showImage(actCV->cvImage); makeHistogram(); }
void MainWindow::on_actionBlack_Hat_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); morpher->setElemNSize(morphUI->elementType, morphUI->kernelSize, morphUI->iteration); morpher->Morph( actCV->cvImage, 6); actCV->showImage(actCV->cvImage); actCV->setWindowTitle("dilate - "); actCV->buildHistogram(); makeHistogram(); }
void MainWindow::on_actionEqualize_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); if(actCV->cvImage.channels() == 1){ equalizeHist(actCV->cvImage, actCV->cvImage); actCV->showImage(actCV->cvImage); actCV->buildHistogram(); makeHistogram(); } }
void MainWindow::on_actionHarris_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); if(actCV->inputImage.data == NULL) return; hCorner->dectect(actCV->inputImage); vector<cv::Point> keyPoints; hCorner->getCorners(keyPoints, .5); cv::Mat drawnImage(actCV->cvImage); hCorner->drawOnImage(drawnImage, keyPoints,cv::Scalar(0,255,0), 3, 2); actCV->showImage(drawnImage); }
void MainWindow::addImage() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); double alpha = 0.75; double beta = ( 1.0 - alpha ); addWeighted( actCV->cvImage, alpha, actCV->inputImage, beta, 0.0, actCV->cvImage); actCV->showImage(actCV->cvImage); actCV->setWindowTitle("Blended"); actCV->buildHistogram(); makeHistogram(); }
void MainWindow::on_actionMake_Border_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); cv::Mat paddedImage; int top = 20, bottom = 20, left = 20, right = 20; int borderType = BORDER_CONSTANT; //BORDER_REPLICATE BORDER_REFLECT101 copyMakeBorder(actCV->cvImage, paddedImage, top, bottom, left, right, borderType, Scalar(0)); actCV->showImage(paddedImage); actCV->setWindowTitle("Padded Image"); actCV->buildHistogram(); makeHistogram(); }
void MainWindow::on_actionBinary_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); if(actCV->cvImage.data == NULL) return; if(actCV->cvImage.channels() == 1) return; cv::Mat image; cv::cvtColor(actCV->inputImage, image, CV_BGR2HSV_FULL); actCV->showImage(image); actCV->buildHistogram(); makeHistogram(); }
void MainWindow::on_actionGray_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); if(actCV->cvImage.data == NULL) return; // if(actCV->cvImage.channels() == 1) return; cv::Mat image; cv::cvtColor(actCV->inputImage, image, CV_BGR2GRAY); actCV->showImage(image); actCV->buildHistogram(); makeHistogram(); //cv::imshow("asdf", gray); }
void MainWindow::on_actionOriginal_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); cv::Mat image; actCV->inputImage.copyTo(image); QString fname = actCV->windowTitle(); CvGlWidget *originalWindow = new CvGlWidget(this); ui->mdiArea->addSubWindow(originalWindow); originalWindow->setWindowTitle("original - " +fname ); image.copyTo(originalWindow->inputImage); originalWindow->showImage(image); originalWindow->buildHistogram(); originalWindow->show(); makeHistogram(); }
void MainWindow::makeHistogram() { CvGlWidget *actCV = activeMdiChild(); if(actCV == NULL) return; if(actCV->cvImage.data == NULL) return; histogramWindow->setWindowTitle(actCV->windowTitle() + "histogram"); histogramWindow->buildHistogram(actCV->histo, actCV->statistics, actCV->hmax); histogramWindow->repaint(); }
void MainWindow::updateMenus() { bool hasMdiChild = (activeMdiChild() != 0); zoomInAct->setEnabled(hasMdiChild); zoomOutAct->setEnabled(hasMdiChild); zoomResetAct->setEnabled(hasMdiChild); openAllAct->setEnabled(hasItem()); closeAct->setEnabled(hasMdiChild); closeAllAct->setEnabled(hasMdiChild); tileAct->setEnabled(hasMdiChild); cascadeAct->setEnabled(hasMdiChild); nextAct->setEnabled(hasMdiChild); previousAct->setEnabled(hasMdiChild); separatorAct->setVisible(hasMdiChild); fitToWindowAct->setEnabled(hasMdiChild); if (activeMdiChild()) activeMdiChild()->windowMenuAction()->setChecked(true); }
void MainWindow::on_actionLocal_threshold_triggered() { if(!activeMdiChild()) return; CvGlWidget *actCV = activeMdiChild(); cv::Mat paddedImage; int kSize = threshUI->kernelSize; int UIT = threshUI->localThresh; int top = kSize, bottom = kSize, left = kSize, right = kSize; int borderType = threshUI->borderType; //BORDER_REPLICATE BORDER_REFLECT101 copyMakeBorder(actCV->cvImage, paddedImage, top, bottom, left, right, borderType, Scalar(0)); int r = actCV->cvImage.rows; int c = actCV->cvImage.cols; // paddedImage.convertTo(paddedImage, CV_64FC1); // actCV->cvImage.convertTo(actCV->cvImage, CV_64FC1); cv::Mat t_im = Mat::zeros(r, c, CV_8UC1); cv::Mat sum; integral(actCV->cvImage, sum, CV_64FC1); for(int i = 0; i < r; i++){ for(int j = 0; j < c; j++){ float sum = 0; // int it = 0; //run the kernel now for(int u = -(kSize - 1)/2; u <= (kSize - 1)/2; u++) for(int v = -(kSize - 1)/2; v <=(kSize -1)/2; v++){ sum += (float)paddedImage.at<uchar>(i +kSize+ u,j +kSize+ v); } //threshold here; 7 is ok float t = (float)sum/(kSize*kSize) - 7; if((float)actCV->cvImage.at<uchar>(i, j) > t) t_im.at<uchar>(i, j) = 255; else t_im.at<uchar>(i, j) = 0; } } actCV->showImage(t_im); actCV->buildHistogram(); makeHistogram(); }
XFormWidget* MainWindow::currentImageWindow() {return activeMdiChild();}