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

    Sorry, but the code you posted is invalid C/C++! First of all: why do you have 2 main functions?
    Why did you put other functions inside void MainWindow::onTrackball_clicked(int,void*)? This is not going to compile and I'm not going to fix it for you. How familiar are you actually with C/C++?
    What you have to do is: do not put the C function definitions inside void MainWindow::onTrackball_clicked(int,void*), instead put them inside another source code file and header, include the header file in MainWindow and then call the functions in void MainWindow::onTrackball_clicked(int,void*). As an alternative you can have those C functions in MainWindow.cpp but not inside void MainWindow::onTrackball_clicked(int,void*) !

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

    @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 2 Replies 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 Offline
      jsulmJ Offline
      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 Offline
        jsulmJ Offline
        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 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

                                          • Login

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