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();
}
Пример #13
0
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();
}
Пример #15
0
XFormWidget* MainWindow::currentImageWindow() {return activeMdiChild();}