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 60.5k 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.
  • G gauravsharma0190

    @jsulm
    i don't put these function definition inside voidmainwindow::ontrackball
    but i am asking you how can i call that function inside my void mainwindow::ontrackball

    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 );
    }
    

    Mean i hyave done .cpp and .h file of this and include in my code both.

    jsulmJ Online
    jsulmJ Online
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #33

    @gauravsharma0190 Like this?

    CannyThreshold(1, nullptr);
    

    So, what exactly is the problem?
    In the code you posted you DID put these function definitions inside void MainWindow::onTrackball_clicked(int,void*) (just check what you posted).

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

    1 Reply Last reply
    0
    • G gauravsharma0190

      @jsulm
      i don't put these function definition inside voidmainwindow::ontrackball
      but i am asking you how can i call that function inside my void mainwindow::ontrackball

      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 );
      }
      

      Mean i hyave done .cpp and .h file of this and include in my code both.

      jsulmJ Online
      jsulmJ Online
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #34

      @gauravsharma0190 Shouldn't

      void CannyThreshold(int, void)
      

      be

      void CannyThreshold(int, void*)
      

      ?

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

      G 1 Reply Last reply
      0
      • G Offline
        G Offline
        gauravsharma0190
        wrote on last edited by
        #35

        ok now i will send you refresh code just wait.
        Thank you.
        i will send you refresh code and errors.

        1 Reply Last reply
        0
        • 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 Online
              jsulmJ Online
              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 Online
                jsulmJ Online
                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 Online
                              jsulmJ Online
                              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 Online
                                      jsulmJ Online
                                      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 Online
                                          jsulmJ Online
                                          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

                                          • Login

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