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

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

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

                                    @gauravsharma0190 After changing PRO file you need to rerun qmake (right-click on the project in QtCreator and then "Run qmake". Then do a rebuild.

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

                                    G 1 Reply Last reply
                                    0
                                    • jsulmJ jsulm

                                      @gauravsharma0190 After changing PRO file you need to rerun qmake (right-click on the project in QtCreator and then "Run qmake". Then do a rebuild.

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

                                      @jsulm
                                      I done it
                                      Now gives many error regarding onTrack.cpp file.

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • G gauravsharma0190

                                        @jsulm
                                        I done it
                                        Now gives many error regarding onTrack.cpp file.

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

                                        @gauravsharma0190 Well, I guess you have many issues there...

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

                                        G 3 Replies Last reply
                                        0
                                        • jsulmJ jsulm

                                          @gauravsharma0190 Well, I guess you have many issues there...

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

                                          @jsulm
                                          Yeap.
                                          are they function's issuses or anything.
                                          I can't undersatnd everything is all right so Why all these issuses are there.
                                          I will send you these issue.

                                          G 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