Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Declaration of function and use it
Forum Updated to NodeBB v4.3 + New Features

Declaration of function and use it

Scheduled Pinned Locked Moved Unsolved General and Desktop
93 Posts 4 Posters 59.9k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jsulmJ jsulm

    @gauravsharma0190 Shouldn't

    void CannyThreshold(int, void)
    

    be

    void CannyThreshold(int, void*)
    

    ?

    G Offline
    G Offline
    gauravsharma0190
    wrote on last edited by
    #36

    @jsulm
    hey here is the code i have done with that.
    /////main.cpp////

    #include<opencv2/highgui/highgui.hpp>
    #include<opencv2/core/core.hpp>
    #include<opencv2/opencv.hpp>
    using namespace cv;
    using namespace std;
    int main(int argc, char *argv[])
    {
    
        QApplication a(argc, argv);
        QSplashScreen *splash =new QSplashScreen;
        splash->setPixmap(QPixmap("/home/pi/Desktop/ceeri1.jpg"));
        splash->show();
    
        MainWindow w;
        QTimer::singleShot(3500,splash,SLOT(close()));
    
        QTimer::singleShot(3500,&w,SLOT(show()));
    
      //w.show();
    
        return a.exec();
    }
    

    ///mainwindow.h///

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    //using namespace cv;
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
    Q_OBJECT
    
    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
    private slots:
    void showTime();
    
    void on_pushButton_5_clicked();
    void onTrackball_clicked(int,void*);
    
    private:
    Ui::MainWindow *ui;
    };
    
    #endif // MAINWINDOW_H
    

    ///ontrack.h///

    #ifndef __ONTRACK_h
    #define __ONTRACK_h
    void cannyThresold(int,void*);
    #endif
    

    ///ontrack.cpp

    #include "ontrack.h"
    #include<opencv2/opencv.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/core/core.hpp>
    void CannyThreshold(int, void)
    {
    /// Reduce noise with a kernel 3x3
    blur( src_gray, detected_edges, Size(3,3) );
    /// Canny detector
    Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
    
    /// Using Canny's output as a mask, we display our result
    dst = Scalar::all(0);
    
    src.copyTo( dst, detected_edges);
    imshow( window_name, dst );
    }
    

    //Here Comes Mainwindow.cpp///

    #include "ui_mainwindow.h"
    #include<opencv2/opencv.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/core/core.hpp>
    #include "ontrack.h"
    #include<QFileDialog>
    #include<QMessageBox>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include<time.h>
    #include<QTimer>
    #include<QDateTime>
    using namespace cv;
    using namespace std;
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    QTimer *timer=new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
    timer->start();
    QDateTime dateTime=QDateTime::currentDateTime();
    QString datetimetext=dateTime.toString();
    ui->DateTime->setText(datetimetext);
    
    }
    ////////Time///////////////
    void MainWindow:: showTime()
    {
    QTime time=QTime::currentTime();
    QString time_text=time.toString("hh : mm : ss");
    if((time.second() % 2)==0)
    {
    time_text[3] =' ';
    time_text[8] =' ';
    }
    ui->Digital->setText(time_text);
    
    }
    
    MainWindow::~MainWindow()
    {
    delete ui;
    }
    
    void MainWindow::on_pushButton_4_clicked()
    {
    
    }
    
    void MainWindow::on_pushButton_5_clicked()
    {
    QString filename=QFileDialog::getOpenFileName(
    this,
    tr("Open file") ,
    "/home/pi/Desktop",
    tr("All files(*.png *.jpg)"));
    
    QMessageBox::information(this,tr("Filename"),filename);
    if(QString::compare(filename,QString())!=0)
    {
        QImage image;
        bool valid=image.load(filename);
        if(valid)
        {
            image=image.scaledToWidth(ui->Picture->width(),Qt::SmoothTransformation);
            ui->Picture->setPixmap(QPixmap::fromImage(image));
    
        }
    void MainWindow::onTrackball_clicked(int,void*)
    {
    
    
    Mat src, src_gray;
    Mat dst, detected_edges;
    
    int edgeThresh = 1;
    int lowThreshold;
    int const max_lowThreshold = 100;
    int ratio = 3;
    int kernel_size = 3;
    char* window_name = "Edge Map";
    
    
    
    @function CannyThreshold
    @brief Trackbar callback - Canny thresholds input with a ratio 1:3
    /
    
    
    /// Load an image
    src = imread( argv[1] );
    
    if( !src.data )
    { return -1; }
    
    /// Create a matrix of the same type and size as src (for dst)
    dst.create( src.size(), src.type() );
    
    /// Convert the image to grayscale
    cvtColor( src, src_gray, CV_BGR2GRAY );
    
    /// Create a window
    namedWindow( window_name, CV_WINDOW_AUTOSIZE );
    
    /// Create a Trackbar for user to enter threshold
    createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
    
    /// Show the image
    CannyThreshold(0, 0);
    
    }
    }
    ...
    But error occurs defination of function outside the class.
    G 1 Reply Last reply
    0
    • G gauravsharma0190

      @jsulm
      hey here is the code i have done with that.
      /////main.cpp////

      #include<opencv2/highgui/highgui.hpp>
      #include<opencv2/core/core.hpp>
      #include<opencv2/opencv.hpp>
      using namespace cv;
      using namespace std;
      int main(int argc, char *argv[])
      {
      
          QApplication a(argc, argv);
          QSplashScreen *splash =new QSplashScreen;
          splash->setPixmap(QPixmap("/home/pi/Desktop/ceeri1.jpg"));
          splash->show();
      
          MainWindow w;
          QTimer::singleShot(3500,splash,SLOT(close()));
      
          QTimer::singleShot(3500,&w,SLOT(show()));
      
        //w.show();
      
          return a.exec();
      }
      

      ///mainwindow.h///

      #ifndef MAINWINDOW_H
      #define MAINWINDOW_H
      
      #include <QMainWindow>
      //using namespace cv;
      namespace Ui {
      class MainWindow;
      }
      
      class MainWindow : public QMainWindow
      {
      Q_OBJECT
      
      public:
      explicit MainWindow(QWidget *parent = 0);
      ~MainWindow();
      
      private slots:
      void showTime();
      
      void on_pushButton_5_clicked();
      void onTrackball_clicked(int,void*);
      
      private:
      Ui::MainWindow *ui;
      };
      
      #endif // MAINWINDOW_H
      

      ///ontrack.h///

      #ifndef __ONTRACK_h
      #define __ONTRACK_h
      void cannyThresold(int,void*);
      #endif
      

      ///ontrack.cpp

      #include "ontrack.h"
      #include<opencv2/opencv.hpp>
      #include <opencv2/highgui/highgui.hpp>
      #include <opencv2/core/core.hpp>
      void CannyThreshold(int, void)
      {
      /// Reduce noise with a kernel 3x3
      blur( src_gray, detected_edges, Size(3,3) );
      /// Canny detector
      Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
      
      /// Using Canny's output as a mask, we display our result
      dst = Scalar::all(0);
      
      src.copyTo( dst, detected_edges);
      imshow( window_name, dst );
      }
      

      //Here Comes Mainwindow.cpp///

      #include "ui_mainwindow.h"
      #include<opencv2/opencv.hpp>
      #include <opencv2/highgui/highgui.hpp>
      #include <opencv2/core/core.hpp>
      #include "ontrack.h"
      #include<QFileDialog>
      #include<QMessageBox>
      #include <iostream>
      #include <string>
      #include <fstream>
      #include<time.h>
      #include<QTimer>
      #include<QDateTime>
      using namespace cv;
      using namespace std;
      MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow)
      {
      ui->setupUi(this);
      QTimer *timer=new QTimer(this);
      connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
      timer->start();
      QDateTime dateTime=QDateTime::currentDateTime();
      QString datetimetext=dateTime.toString();
      ui->DateTime->setText(datetimetext);
      
      }
      ////////Time///////////////
      void MainWindow:: showTime()
      {
      QTime time=QTime::currentTime();
      QString time_text=time.toString("hh : mm : ss");
      if((time.second() % 2)==0)
      {
      time_text[3] =' ';
      time_text[8] =' ';
      }
      ui->Digital->setText(time_text);
      
      }
      
      MainWindow::~MainWindow()
      {
      delete ui;
      }
      
      void MainWindow::on_pushButton_4_clicked()
      {
      
      }
      
      void MainWindow::on_pushButton_5_clicked()
      {
      QString filename=QFileDialog::getOpenFileName(
      this,
      tr("Open file") ,
      "/home/pi/Desktop",
      tr("All files(*.png *.jpg)"));
      
      QMessageBox::information(this,tr("Filename"),filename);
      if(QString::compare(filename,QString())!=0)
      {
          QImage image;
          bool valid=image.load(filename);
          if(valid)
          {
              image=image.scaledToWidth(ui->Picture->width(),Qt::SmoothTransformation);
              ui->Picture->setPixmap(QPixmap::fromImage(image));
      
          }
      void MainWindow::onTrackball_clicked(int,void*)
      {
      
      
      Mat src, src_gray;
      Mat dst, detected_edges;
      
      int edgeThresh = 1;
      int lowThreshold;
      int const max_lowThreshold = 100;
      int ratio = 3;
      int kernel_size = 3;
      char* window_name = "Edge Map";
      
      
      
      @function CannyThreshold
      @brief Trackbar callback - Canny thresholds input with a ratio 1:3
      /
      
      
      /// Load an image
      src = imread( argv[1] );
      
      if( !src.data )
      { return -1; }
      
      /// Create a matrix of the same type and size as src (for dst)
      dst.create( src.size(), src.type() );
      
      /// Convert the image to grayscale
      cvtColor( src, src_gray, CV_BGR2GRAY );
      
      /// Create a window
      namedWindow( window_name, CV_WINDOW_AUTOSIZE );
      
      /// Create a Trackbar for user to enter threshold
      createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
      
      /// Show the image
      CannyThreshold(0, 0);
      
      }
      }
      ...
      But error occurs defination of function outside the class.
      G Offline
      G Offline
      gauravsharma0190
      wrote on last edited by
      #37

      @gauravsharma0190 said:

      Sorry in ontrack.cpp i again add
      Mat src, src_gray;
      Mat dst, detected_edges;

      jsulmJ 2 Replies Last reply
      0
      • G gauravsharma0190

        @gauravsharma0190 said:

        Sorry in ontrack.cpp i again add
        Mat src, src_gray;
        Mat dst, detected_edges;

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #38

        @gauravsharma0190 Can you post the whole error message?
        Why do you have int and void* parameter in onTrackball_clicked which you do not use?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        1
        • G gauravsharma0190

          @gauravsharma0190 said:

          Sorry in ontrack.cpp i again add
          Mat src, src_gray;
          Mat dst, detected_edges;

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #39

          @gauravsharma0190 Take a look at this:

          
          void MainWindow::on_pushButton_5_clicked()
          {
          QString filename=QFileDialog::getOpenFileName(
          this,
          tr("Open file") ,
          "/home/pi/Desktop",
          tr("All files(*.png *.jpg)"));
          
          QMessageBox::information(this,tr("Filename"),filename);
          if(QString::compare(filename,QString())!=0)
          {
              QImage image;
              bool valid=image.load(filename);
              if(valid)
              {
                  image=image.scaledToWidth(ui->Picture->width(),Qt::SmoothTransformation);
                  ui->Picture->setPixmap(QPixmap::fromImage(image));
          
              }
          void MainWindow::onTrackball_clicked(int,void*)
          {
          

          void MainWindow::onTrackball_clicked(int,void*) is inside void MainWindow::on_pushButton_5_clicked() - this is invalid!

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          G 1 Reply Last reply
          1
          • jsulmJ jsulm

            @gauravsharma0190 Take a look at this:

            
            void MainWindow::on_pushButton_5_clicked()
            {
            QString filename=QFileDialog::getOpenFileName(
            this,
            tr("Open file") ,
            "/home/pi/Desktop",
            tr("All files(*.png *.jpg)"));
            
            QMessageBox::information(this,tr("Filename"),filename);
            if(QString::compare(filename,QString())!=0)
            {
                QImage image;
                bool valid=image.load(filename);
                if(valid)
                {
                    image=image.scaledToWidth(ui->Picture->width(),Qt::SmoothTransformation);
                    ui->Picture->setPixmap(QPixmap::fromImage(image));
            
                }
            void MainWindow::onTrackball_clicked(int,void*)
            {
            

            void MainWindow::onTrackball_clicked(int,void*) is inside void MainWindow::on_pushButton_5_clicked() - this is invalid!

            G Offline
            G Offline
            gauravsharma0190
            wrote on last edited by
            #40

            @jsulm
            but i am not defining ontrack_clicked in push button its different.

            mrjjM 1 Reply Last reply
            0
            • G gauravsharma0190

              @jsulm
              but i am not defining ontrack_clicked in push button its different.

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #41

              @gauravsharma0190

              Are you sure ?
              it really, really looks like you do :)

              G 1 Reply Last reply
              1
              • mrjjM mrjj

                @gauravsharma0190

                Are you sure ?
                it really, really looks like you do :)

                G Offline
                G Offline
                gauravsharma0190
                wrote on last edited by
                #42

                @mrjj
                sir i again improving it.
                as

                void MainWindow::on_pushButton_6_clicked()
                {
                   /* Mat src , dst;
                
                
                 //   char* source_window = "Source image";
                   // char* equalized_window = "Equalized Image";
                
                    /// Load image
                    src = imread( "/home/pi/Desktop/b4.jpg" );
                
                
                
                    /// Convert to grayscale
                    cvtColor( src, src, CV_BGR2GRAY );
                
                    /// Apply Histogram Equalization
                    equalizeHist( src, dst );
                
                    /// Display results
                    namedWindow( "source", CV_WINDOW_NORMAL );
                    namedWindow( "equalized", CV_WINDOW_NORMAL );
                
                    imshow( "source", src );
                    imshow( "equalized", dst );
                
                    /// Wait until user exits the program
                  //  waitKey(0);*/
                
                
                
                    Mat src_base, hsv_base;
                    Mat src_test1, hsv_test1;
                    Mat src_test2, hsv_test2;
                    Mat hsv_half_down;
                
                    /// Load three images with different environment settings
                
                    src_base = imread( "/home/pi/Desktop/b4.jpg" );
                    src_test1 = imread( "/home/pi/Desktop/b4.jpg" );
                    src_test2 = imread( "/home/pi/Desktop/b3.jpg" );
                
                    /// Convert to HSV
                    cvtColor( src_base, hsv_base, COLOR_BGR2HSV );
                    cvtColor( src_test1, hsv_test1, COLOR_BGR2HSV );
                    cvtColor( src_test2, hsv_test2, COLOR_BGR2HSV );
                
                    hsv_half_down = hsv_base( Range( hsv_base.rows/2, hsv_base.rows - 1 ), Range( 0, hsv_base.cols - 1 ) );
                
                    /// Using 50 bins for hue and 60 for saturation
                    int h_bins = 50; int s_bins = 60;
                    int histSize[] = { h_bins, s_bins };
                
                    // hue varies from 0 to 179, saturation from 0 to 255
                    float h_ranges[] = { 0, 180 };
                    float s_ranges[] = { 0, 256 };
                
                    const float* ranges[] = { h_ranges, s_ranges };
                
                    // Use the o-th and 1-st channels
                    int channels[] = { 0, 1 };
                
                
                    /// Histograms
                    MatND hist_base;
                    MatND hist_half_down;
                    MatND hist_test1;
                    MatND hist_test2;
                
                    /// Calculate the histograms for the HSV images
                    calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false );
                    normalize( hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat() );
                
                    calcHist( &hsv_half_down, 1, channels, Mat(), hist_half_down, 2, histSize, ranges, true, false );
                    normalize( hist_half_down, hist_half_down, 0, 1, NORM_MINMAX, -1, Mat() );
                
                    calcHist( &hsv_test1, 1, channels, Mat(), hist_test1, 2, histSize, ranges, true, false );
                    normalize( hist_test1, hist_test1, 0, 1, NORM_MINMAX, -1, Mat() );
                
                    calcHist( &hsv_test2, 1, channels, Mat(), hist_test2, 2, histSize, ranges, true, false );
                    normalize( hist_test2, hist_test2, 0, 1, NORM_MINMAX, -1, Mat() );
                
                    /// Apply the histogram comparison methods
                    for( int i = 0; i < 4; i++ )
                    {
                        int compare_method = i;
                        double base_base = compareHist( hist_base, hist_base, compare_method );
                        double base_half = compareHist( hist_base, hist_half_down, compare_method );
                        double base_test1 = compareHist( hist_base, hist_test1, compare_method );
                        double base_test2 = compareHist( hist_base, hist_test2, compare_method );
                
                        printf( " Method [%d] Perfect, Base-Half, Base-Test(1), Base-Test(2) : %f, %f, %f, %f \n", i, base_base, base_half , base_test1, base_test2 );
                    }
                
                
                
                
                    }
                
                
                
                void MainWindow::on_onTrackball_clicked()
                {
                
                    Mat src, src_gray;
                    Mat dst, detected_edges;
                
                    int edgeThresh = 1;
                    int lowThreshold;
                    int const max_lowThreshold = 100;
                    int ratio = 3;
                    int kernel_size = 3;
                    char* window_name = "Edge Map";
                
                
                
                    /// Load image
                    src = imread( "/home/pi/Desktop/b4.jpg");
                     /// Create a matrix of the same type and size as src (for dst)
                
                
                
                    dst.create( src.size(), src.type() );
                
                    /// Convert the image to grayscale
                    cvtColor( src, src_gray, CV_BGR2GRAY );
                
                    /// Create a window
                    namedWindow( window_name, CV_WINDOW_NORMAL );
                
                    /// Create a Trackbar for user to enter threshold
                  //  createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
                
                    /// Show the image
                    CannyThreshold(0, 0);
                
                
                    /// Separate the image in 3 places ( B, G and R )
                    vector<Mat> bgr_planes;
                    split( src, bgr_planes );
                
                    /// Establish the number of bins
                    int histSize = 256;
                
                    /// Set the ranges ( for B,G,R) )
                    float range[] = { 0, 256 } ;
                    const float* histRange = { range };
                
                    bool uniform = true;
                    bool accumulate = false;
                
                    Mat b_hist, g_hist, r_hist;
                
                    /// Compute the histograms:
                    calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );
                    calcHist( &bgr_planes[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate );
                    calcHist( &bgr_planes[2], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate );
                
                    // Draw the histograms for B, G and R
                    int hist_w = 512; int hist_h = 400;
                   int bin_w = cvRound( (double) hist_w/histSize );
                
                    Mat histImage( hist_h, hist_w, CV_8UC3, Scalar( 0,0,0) );
                
                    /// Normalize the result to [ 0, histImage.rows ]
                    normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
                    normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
                    normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
                
                    /// Draw for each channel
                    for( int i = 1; i < histSize; i++ )
                    {
                        line( histImage, Point( bin_w*(i-1), hist_h - cvRound(b_hist.at<float>(i-1)) ) ,
                                         Point( bin_w*(i), hist_h - cvRound(b_hist.at<float>(i)) ),
                                         Scalar( 255, 0, 0), 2, 8, 0  );
                        line( histImage, Point( bin_w*(i-1), hist_h - cvRound(g_hist.at<float>(i-1)) ) ,
                                         Point( bin_w*(i), hist_h - cvRound(g_hist.at<float>(i)) ),
                                         Scalar( 0, 255, 0), 2, 8, 0  );
                        line( histImage, Point( bin_w*(i-1), hist_h - cvRound(r_hist.at<float>(i-1)) ) ,
                                         Point( bin_w*(i), hist_h - cvRound(r_hist.at<float>(i)) ),
                                         Scalar( 0, 0, 255), 2, 8, 0  );
                    }
                
                    /// Display
                    namedWindow("calcHist Demo", CV_WINDOW_AUTOSIZE );
                    imshow("calcHist Demo", histImage );
                  imwrite("calcHist Demo2.jpg", histImage);
                    waitKey(-1);
                
                
                  }
                
                
                ...
                This is new improved code .but there are error or build issue
                1.In member function'void mainwindow::on_on_trackball_clicked()
                ****canny Thresol was not declered in this scope .(function which i declare and define in .h and .c file.
                unsed variable 'edgeThresh'.
                1 Reply Last reply
                0
                • mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #43

                  @gauravsharma0190 said:

                  CannyThreshold

                  this function ?
                  CannyThreshold
                  that you call with
                  CannyThreshold(0, 0);

                  and you do include the .h file where its defined?

                  G 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @gauravsharma0190 said:

                    CannyThreshold

                    this function ?
                    CannyThreshold
                    that you call with
                    CannyThreshold(0, 0);

                    and you do include the .h file where its defined?

                    G Offline
                    G Offline
                    gauravsharma0190
                    wrote on last edited by
                    #44

                    @mrjj
                    it is defined as

                    ///ontrack.h///
                    
                    #ifndef __ONTRACK_h
                    #define __ONTRACK_h
                    void cannyThresold(int,void*);
                    #endif
                    ......
                    
                    ///ontrack.cpp
                    #include "ontrack.h"
                    #include<opencv2/opencv.hpp>
                    #include <opencv2/highgui/highgui.hpp>
                    #include <opencv2/core/core.hpp>
                    void CannyThreshold(int, void*)
                    {
                    /// Reduce noise with a kernel 3x3
                    blur( src_gray, detected_edges, Size(3,3) );
                    /// Canny detector
                    Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
                    
                    /// Using Canny's output as a mask, we display our result
                    dst = Scalar::all(0);
                    
                    src.copyTo( dst, detected_edges);
                    imshow( window_name, dst );
                    }
                    

                    .....
                    thus i include ontrack.h in mainwindow.cpp code.
                    but error occurs.
                    Why??
                    i can't understand.

                    jsulmJ 1 Reply Last reply
                    0
                    • mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #45

                      I dont understand either.
                      Seems fine.
                      try to define a test function
                      as in
                      ontrack.h
                      void mytest();
                      and call that from main.

                      If that is still not known, it means that mainwinow do not really include ontrack.h for some reason.

                      1 Reply Last reply
                      0
                      • G gauravsharma0190

                        @mrjj
                        it is defined as

                        ///ontrack.h///
                        
                        #ifndef __ONTRACK_h
                        #define __ONTRACK_h
                        void cannyThresold(int,void*);
                        #endif
                        ......
                        
                        ///ontrack.cpp
                        #include "ontrack.h"
                        #include<opencv2/opencv.hpp>
                        #include <opencv2/highgui/highgui.hpp>
                        #include <opencv2/core/core.hpp>
                        void CannyThreshold(int, void*)
                        {
                        /// Reduce noise with a kernel 3x3
                        blur( src_gray, detected_edges, Size(3,3) );
                        /// Canny detector
                        Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
                        
                        /// Using Canny's output as a mask, we display our result
                        dst = Scalar::all(0);
                        
                        src.copyTo( dst, detected_edges);
                        imshow( window_name, dst );
                        }
                        

                        .....
                        thus i include ontrack.h in mainwindow.cpp code.
                        but error occurs.
                        Why??
                        i can't understand.

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #46

                        @gauravsharma0190 You call it like this CannyThreshold(0, 0); and in ontrack.cpp it is defined like void CannyThreshold(int, void*). But in ontrack.h it is void cannyThresold(int,void*); please fix the name of the function.

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        mrjjM G 2 Replies Last reply
                        1
                        • jsulmJ jsulm

                          @gauravsharma0190 You call it like this CannyThreshold(0, 0); and in ontrack.cpp it is defined like void CannyThreshold(int, void*). But in ontrack.h it is void cannyThresold(int,void*); please fix the name of the function.

                          mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #47

                          @jsulm
                          heh Good spotted. completely missed "old" :)

                          G 1 Reply Last reply
                          1
                          • mrjjM mrjj

                            @jsulm
                            heh Good spotted. completely missed "old" :)

                            G Offline
                            G Offline
                            gauravsharma0190
                            wrote on last edited by
                            #48

                            @mrjj
                            I fix canny as Canny in .h file
                            but again error occurs.

                            1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @gauravsharma0190 You call it like this CannyThreshold(0, 0); and in ontrack.cpp it is defined like void CannyThreshold(int, void*). But in ontrack.h it is void cannyThresold(int,void*); please fix the name of the function.

                              G Offline
                              G Offline
                              gauravsharma0190
                              wrote on last edited by
                              #49

                              @jsulm
                              Hey i fixed it .But again error.

                              jsulmJ 1 Reply Last reply
                              0
                              • G gauravsharma0190

                                @jsulm
                                Hey i fixed it .But again error.

                                jsulmJ Offline
                                jsulmJ Offline
                                jsulm
                                Lifetime Qt Champion
                                wrote on last edited by
                                #50

                                @gauravsharma0190 "But again error" - why don't you say what error you get now?

                                https://forum.qt.io/topic/113070/qt-code-of-conduct

                                G 1 Reply Last reply
                                2
                                • jsulmJ jsulm

                                  @gauravsharma0190 "But again error" - why don't you say what error you get now?

                                  G Offline
                                  G Offline
                                  gauravsharma0190
                                  wrote on last edited by
                                  #51

                                  @jsulm
                                  yes it tells undefined reference to 'CannyThresold(int,void*)'.
                                  collect2:error ld returned 1 exit status.

                                  jsulmJ 1 Reply Last reply
                                  0
                                  • G gauravsharma0190

                                    @jsulm
                                    yes it tells undefined reference to 'CannyThresold(int,void*)'.
                                    collect2:error ld returned 1 exit status.

                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #52

                                    @gauravsharma0190 Is ontrack.cpp part of your project and is it built?
                                    "undefined reference to 'CannyThresold(int,void*)" - means linker cannot find CannyThresold(int,void*)

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    G 1 Reply Last reply
                                    1
                                    • jsulmJ jsulm

                                      @gauravsharma0190 Is ontrack.cpp part of your project and is it built?
                                      "undefined reference to 'CannyThresold(int,void*)" - means linker cannot find CannyThresold(int,void*)

                                      G Offline
                                      G Offline
                                      gauravsharma0190
                                      wrote on last edited by
                                      #53

                                      @jsulm
                                      Actually i put .h and .cpp file in my qt project folder.

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • G gauravsharma0190

                                        @jsulm
                                        Actually i put .h and .cpp file in my qt project folder.

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #54

                                        @gauravsharma0190 But did you add them to your project?
                                        They should be in the PRO file, like:

                                        SOURCES += main.cpp\
                                                mainwindow.cpp\
                                                ontrack.cpp
                                        
                                        HEADERS  += mainwindow.h\
                                                ontrack.h
                                        

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        G 1 Reply Last reply
                                        1
                                        • jsulmJ jsulm

                                          @gauravsharma0190 But did you add them to your project?
                                          They should be in the PRO file, like:

                                          SOURCES += main.cpp\
                                                  mainwindow.cpp\
                                                  ontrack.cpp
                                          
                                          HEADERS  += mainwindow.h\
                                                  ontrack.h
                                          
                                          G Offline
                                          G Offline
                                          gauravsharma0190
                                          wrote on last edited by
                                          #55

                                          @jsulm
                                          i added it but gives error as
                                          parse error onTrack.cpp
                                          Makefile error 3

                                          jsulmJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved