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.
  • J jsulm
    22 Jul 2016, 05:29

    @gauravsharma0190 Are you sure? Did you verify using debugger? If they have correct values then I don't know why it's crashing...

    G Offline
    G Offline
    gauravsharma0190
    wrote on 22 Jul 2016, 06:00 last edited by
    #84

    @gauravsharma0190 said:

    void MainWindow::on_onTrackball_clicked()
    {
    int threshold_value = 0;
    int threshold_type = 3;
    int const max_value = 255;
    int const max_type = 4;
    // int const max_BINARY_value = 255;

    Mat src, src_gray, dst;
    

    // char* window_name = "Threshold Demo";

    //char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted";
    //char* trackbar_value = "Value";
    
    
    
    
    /// Load image
    src = imread( "/home/pi/Desktop/b4.jpg");
    
    
      /// Convert the image to Gray
      cvtColor( src, src_gray, CV_BGR2GRAY );
    
      /// Create a window to display results
      namedWindow( "Threshold", CV_WINDOW_AUTOSIZE );
    
      /// Create Trackbar to choose type of Threshold
      createTrackbar( "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted","Threshold", &threshold_type, max_type, Threshold_Demo );
    
      createTrackbar( "value","Threshold", &threshold_value, max_value, Threshold_Demo );
    
      /// Call the function to initialize
    

    @@@ Threshold_Demo( 0, 0)

    }

    When I Comment the line Threshold _demo everything went OK!!!
    Results are coming but when i uncomment it everything crashes.

    J 1 Reply Last reply 22 Jul 2016, 06:16
    0
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 22 Jul 2016, 06:10 last edited by
      #85

      Hi
      I have a teory ;)

      namedWindow

      void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )

      It wants a ref, so i assume that the crash is that
      // char* window_name = "Threshold Demo";

      will run out of scope

      where as
      namedWindow( "Threshold", CV_WINDOW_AUTOSIZE );
      There "Threshold" is managed by the compiler and wont run out.

      To test this, please move
      char* window_name = "Threshold Demo";

      OUTSIDE the function so it last longer than function call.

      1 Reply Last reply
      0
      • G gauravsharma0190
        22 Jul 2016, 06:00

        @gauravsharma0190 said:

        void MainWindow::on_onTrackball_clicked()
        {
        int threshold_value = 0;
        int threshold_type = 3;
        int const max_value = 255;
        int const max_type = 4;
        // int const max_BINARY_value = 255;

        Mat src, src_gray, dst;
        

        // char* window_name = "Threshold Demo";

        //char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted";
        //char* trackbar_value = "Value";
        
        
        
        
        /// Load image
        src = imread( "/home/pi/Desktop/b4.jpg");
        
        
          /// Convert the image to Gray
          cvtColor( src, src_gray, CV_BGR2GRAY );
        
          /// Create a window to display results
          namedWindow( "Threshold", CV_WINDOW_AUTOSIZE );
        
          /// Create Trackbar to choose type of Threshold
          createTrackbar( "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted","Threshold", &threshold_type, max_type, Threshold_Demo );
        
          createTrackbar( "value","Threshold", &threshold_value, max_value, Threshold_Demo );
        
          /// Call the function to initialize
        

        @@@ Threshold_Demo( 0, 0)

        }

        When I Comment the line Threshold _demo everything went OK!!!
        Results are coming but when i uncomment it everything crashes.

        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 22 Jul 2016, 06:16 last edited by
        #86

        @gauravsharma0190 Please take a closer look at this code:

        void MainWindow::on_onTrackball_clicked()
        {
        int threshold_value = 0;
        int threshold_type = 3;
        int const max_value = 255;
        int const max_type = 4;
        // int const max_BINARY_value = 255;
        // These variables are LOCAL!
        Mat src, src_gray, dst;
        

        You use local variables in void MainWindow::on_onTrackball_clicked(). All these variables exist only in that function: Mat src, src_gray, dst;
        In Threshold_Demo() these variable are not visible (I have no idea why your code compiles? You probably defined these variables somewhere else again). I already pointed out this issue in one of my previous posts.

        void Threshold_Demo( int, void* )
        {
          /* 0: Binary
             1: Binary Inverted
             2: Threshold Truncated
             3: Threshold to Zero
             4: Threshold to Zero Inverted
           */
        // src_gray, dst, threshold_value, max_BINARY_value,threshold_type are GLOBAL! Where are they defined?
        @@threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
        

        Please make really sure src_gray, dst, threshold_value, max_BINARY_value,threshold_type have valid values when you call threshold( )! Use debugger for this.

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

        G 1 Reply Last reply 22 Jul 2016, 07:10
        1
        • J jsulm
          22 Jul 2016, 06:16

          @gauravsharma0190 Please take a closer look at this code:

          void MainWindow::on_onTrackball_clicked()
          {
          int threshold_value = 0;
          int threshold_type = 3;
          int const max_value = 255;
          int const max_type = 4;
          // int const max_BINARY_value = 255;
          // These variables are LOCAL!
          Mat src, src_gray, dst;
          

          You use local variables in void MainWindow::on_onTrackball_clicked(). All these variables exist only in that function: Mat src, src_gray, dst;
          In Threshold_Demo() these variable are not visible (I have no idea why your code compiles? You probably defined these variables somewhere else again). I already pointed out this issue in one of my previous posts.

          void Threshold_Demo( int, void* )
          {
            /* 0: Binary
               1: Binary Inverted
               2: Threshold Truncated
               3: Threshold to Zero
               4: Threshold to Zero Inverted
             */
          // src_gray, dst, threshold_value, max_BINARY_value,threshold_type are GLOBAL! Where are they defined?
          @@threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
          

          Please make really sure src_gray, dst, threshold_value, max_BINARY_value,threshold_type have valid values when you call threshold( )! Use debugger for this.

          G Offline
          G Offline
          gauravsharma0190
          wrote on 22 Jul 2016, 07:10 last edited by
          #87

          @jsulm
          Hey the ontrack.cpp file has these variable defined i havn't sent you full code
          here it is

          #include"onTrack.h"
          #include<imgproc.hpp>
           using namespace cv;
          using namespace std;
          int threshold_value=0;
          int threshold_type=3;
          int const max_BINARY_value=255;
          Mat src_gray,dst;
          
          void Threshold_Demo( int, void* )
          {
            /* 0: Binary
               1: Binary Inverted
               2: Threshold Truncated
               3: Threshold to Zero
               4: Threshold to Zero Inverted
             */
          
            threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
          
            imshow( window_name, dst );
          }
          ......
          J 1 Reply Last reply 22 Jul 2016, 07:28
          0
          • G gauravsharma0190
            22 Jul 2016, 07:10

            @jsulm
            Hey the ontrack.cpp file has these variable defined i havn't sent you full code
            here it is

            #include"onTrack.h"
            #include<imgproc.hpp>
             using namespace cv;
            using namespace std;
            int threshold_value=0;
            int threshold_type=3;
            int const max_BINARY_value=255;
            Mat src_gray,dst;
            
            void Threshold_Demo( int, void* )
            {
              /* 0: Binary
                 1: Binary Inverted
                 2: Threshold Truncated
                 3: Threshold to Zero
                 4: Threshold to Zero Inverted
               */
            
              threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
            
              imshow( window_name, dst );
            }
            ......
            J Offline
            J Offline
            jsulm
            Lifetime Qt Champion
            wrote on 22 Jul 2016, 07:28 last edited by
            #88

            @gauravsharma0190 That is the problem I'm talking all the time! You do not initialize src_gray,dst from ontrack.cpp, so you use not properly initialized variables in Threshold_Demo(). As I said in MainWindow::on_onTrackball_clicked() you use local variables rc_gray,dst, not the ones from ontrack.cpp!
            So, again where are these variables initialized?

            // Where are they initialized?
            Mat src_gray,dst;
            
            void Threshold_Demo( int, void* )
            {
              /* 0: Binary
                 1: Binary Inverted
                 2: Threshold Truncated
                 3: Threshold to Zero
                 4: Threshold to Zero Inverted
               */
            

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

            G 1 Reply Last reply 22 Jul 2016, 08:55
            0
            • J jsulm
              22 Jul 2016, 07:28

              @gauravsharma0190 That is the problem I'm talking all the time! You do not initialize src_gray,dst from ontrack.cpp, so you use not properly initialized variables in Threshold_Demo(). As I said in MainWindow::on_onTrackball_clicked() you use local variables rc_gray,dst, not the ones from ontrack.cpp!
              So, again where are these variables initialized?

              // Where are they initialized?
              Mat src_gray,dst;
              
              void Threshold_Demo( int, void* )
              {
                /* 0: Binary
                   1: Binary Inverted
                   2: Threshold Truncated
                   3: Threshold to Zero
                   4: Threshold to Zero Inverted
                 */
              
              G Offline
              G Offline
              gauravsharma0190
              wrote on 22 Jul 2016, 08:55 last edited by
              #89

              @jsulm said:

              That is the problem I'm talking all the time! You do not initialize src_gray,dst from ontrack.cpp, so you use not properly initialized variables in Threshold_Demo(). As I said in MainWindow::on_onTrackball_clicked() you use local variables rc_gray,dst, not the ones from ontrack.cpp!
              So, again where are these variables initialized?

              // Where are they initialized?
              Mat src_gray,dst;

              void Threshold_Demo( int, void* )
              {
              /* 0: Binary
              1: Binary Inverted
              2: Threshold Truncated
              3: Threshold to Zero
              4: Threshold to Zero Inverted
              */

              I initalized it in Mainwindow::onTrackBall_clicked().
              I am sending you.
              mainWindow.cpp*******

              #include "mainwindow.h"
              #include "ui_mainwindow.h"
              #include<opencv2/opencv.hpp>
              #include <opencv2/highgui/highgui.hpp>
              #include <opencv2/core/core.hpp>
              #include <opencv2/imgproc/imgproc.hpp>
              #include<QFileDialog>
              #include<QMessageBox>
              #include <iostream>
              #include<QProcess>
              #include "onTrackBall.h"
              #include<syscall.h>
              #include<signal.h>
              #include <string>
              #include<stdlib.h>
              #include<sys/ioctl.h>
              #include <fstream>
              #include<time.h>
              #include<QTimer>
              #include<QDateTime>
              //#include"onTrackBall.h"
              //#include"onTrackBall.c"
              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);
              
              }
              void MainWindow::on_onTrackball_clicked()
              {
                  int threshold_value = 0;
                  int threshold_type = 3;
                  int const max_value = 255;
                  int const max_type = 4;
                 // int const max_BINARY_value = 255;
              
                  Mat src, src_gray;
              
              
              
              
              
                  /// Load image
                  src = imread( "/home/pi/Desktop/b4.jpg");
              
              
                    /// Convert the image to Gray
                    cvtColor( src, src_gray, CV_BGR2GRAY );
              
                    /// Create a window to display results
                    namedWindow( "Threshold", CV_WINDOW_NORMAL );
              
                    /// Create Trackbar to choose type of Threshold
                    createTrackbar( "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted","Threshold", &threshold_type, max_type, Threshold_Demo );
              
                    createTrackbar( "value","Threshold", &threshold_value, max_value, Threshold_Demo );
              
                    /// Call the function to initialize
                  Threshold_Demo( 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_NORMAL );
                  imshow("calcHist Demo", histImage );
                imwrite("calcHist Demo2.jpg", histImage);
              waitKey(-1);
              
              
                }
              ...
              J 1 Reply Last reply 22 Jul 2016, 09:26
              0
              • G gauravsharma0190
                22 Jul 2016, 08:55

                @jsulm said:

                That is the problem I'm talking all the time! You do not initialize src_gray,dst from ontrack.cpp, so you use not properly initialized variables in Threshold_Demo(). As I said in MainWindow::on_onTrackball_clicked() you use local variables rc_gray,dst, not the ones from ontrack.cpp!
                So, again where are these variables initialized?

                // Where are they initialized?
                Mat src_gray,dst;

                void Threshold_Demo( int, void* )
                {
                /* 0: Binary
                1: Binary Inverted
                2: Threshold Truncated
                3: Threshold to Zero
                4: Threshold to Zero Inverted
                */

                I initalized it in Mainwindow::onTrackBall_clicked().
                I am sending you.
                mainWindow.cpp*******

                #include "mainwindow.h"
                #include "ui_mainwindow.h"
                #include<opencv2/opencv.hpp>
                #include <opencv2/highgui/highgui.hpp>
                #include <opencv2/core/core.hpp>
                #include <opencv2/imgproc/imgproc.hpp>
                #include<QFileDialog>
                #include<QMessageBox>
                #include <iostream>
                #include<QProcess>
                #include "onTrackBall.h"
                #include<syscall.h>
                #include<signal.h>
                #include <string>
                #include<stdlib.h>
                #include<sys/ioctl.h>
                #include <fstream>
                #include<time.h>
                #include<QTimer>
                #include<QDateTime>
                //#include"onTrackBall.h"
                //#include"onTrackBall.c"
                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);
                
                }
                void MainWindow::on_onTrackball_clicked()
                {
                    int threshold_value = 0;
                    int threshold_type = 3;
                    int const max_value = 255;
                    int const max_type = 4;
                   // int const max_BINARY_value = 255;
                
                    Mat src, src_gray;
                
                
                
                
                
                    /// Load image
                    src = imread( "/home/pi/Desktop/b4.jpg");
                
                
                      /// Convert the image to Gray
                      cvtColor( src, src_gray, CV_BGR2GRAY );
                
                      /// Create a window to display results
                      namedWindow( "Threshold", CV_WINDOW_NORMAL );
                
                      /// Create Trackbar to choose type of Threshold
                      createTrackbar( "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted","Threshold", &threshold_type, max_type, Threshold_Demo );
                
                      createTrackbar( "value","Threshold", &threshold_value, max_value, Threshold_Demo );
                
                      /// Call the function to initialize
                    Threshold_Demo( 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_NORMAL );
                    imshow("calcHist Demo", histImage );
                  imwrite("calcHist Demo2.jpg", histImage);
                waitKey(-1);
                
                
                  }
                ...
                J Offline
                J Offline
                jsulm
                Lifetime Qt Champion
                wrote on 22 Jul 2016, 09:26 last edited by
                #90

                @gauravsharma0190 Please read what I'm writing more carefully!
                In Mainwindow::onTrackBall_clicked() you don't initialize them! Because you use local variables there with same names:

                void MainWindow::on_onTrackball_clicked()
                {
                     // Here src and src_gray are not the same as in ontrack.cpp!
                     // Values you're assigning here to src and src_gray are only visible here but not in ontrack.cpp!
                    Mat src, src_gray;
                

                I'm running out of ideas how to explain it. You should learn C++, especially the visibility and scope of variables.

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

                G 1 Reply Last reply 22 Jul 2016, 10:28
                1
                • J jsulm
                  22 Jul 2016, 09:26

                  @gauravsharma0190 Please read what I'm writing more carefully!
                  In Mainwindow::onTrackBall_clicked() you don't initialize them! Because you use local variables there with same names:

                  void MainWindow::on_onTrackball_clicked()
                  {
                       // Here src and src_gray are not the same as in ontrack.cpp!
                       // Values you're assigning here to src and src_gray are only visible here but not in ontrack.cpp!
                      Mat src, src_gray;
                  

                  I'm running out of ideas how to explain it. You should learn C++, especially the visibility and scope of variables.

                  G Offline
                  G Offline
                  gauravsharma0190
                  wrote on 22 Jul 2016, 10:28 last edited by
                  #91

                  @jsulm
                  You mean to say in OnTrack_clicked()
                  src and src_gray variable
                  and in ontrack.cpp
                  src_gray variable should be different.
                  I can't get you.
                  In Mainwindow::onTrackBall_clicked() you don't initialize them! Because you use local variables there with same names:

                  void MainWindow::on_onTrackball_clicked()
                  {
                  // Here src and src_gray are not the same as in ontrack.cpp!
                  // Values you're assigning here to src and src_gray are only visible here but not in ontrack.cpp!
                  Here what is local variable in it.
                  Local mean variable inside the function??
                  And globle mean en tire the programme.

                  J 1 Reply Last reply 22 Jul 2016, 10:45
                  0
                  • G gauravsharma0190
                    22 Jul 2016, 10:28

                    @jsulm
                    You mean to say in OnTrack_clicked()
                    src and src_gray variable
                    and in ontrack.cpp
                    src_gray variable should be different.
                    I can't get you.
                    In Mainwindow::onTrackBall_clicked() you don't initialize them! Because you use local variables there with same names:

                    void MainWindow::on_onTrackball_clicked()
                    {
                    // Here src and src_gray are not the same as in ontrack.cpp!
                    // Values you're assigning here to src and src_gray are only visible here but not in ontrack.cpp!
                    Here what is local variable in it.
                    Local mean variable inside the function??
                    And globle mean en tire the programme.

                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 22 Jul 2016, 10:45 last edited by
                    #92

                    @gauravsharma0190 No, I don't mean that they should be different. I mean the opposite: they need to be the same (but they are not).
                    Local variable is a variable which is only visible in a certain scope, for example in a function. The variables in ontrack.cpp are only visible in ontrack.cpp, but not in MainWindow. In Mainwindow::onTrackBall_clicked() you declare OTHER variables with SAME names.
                    What do you think which src_grey is used in Threshold_Demo( int, void* )? Is it the one from MainWindow::onTrackBall_clicked() or the one from ontrack.cpp?

                    // src_gray here is not the same as in MainWindow::onTrackBall_clicked()
                    Mat src_gray,dst;
                    void Threshold_Demo( int, void* )
                    {
                      threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
                    }
                    

                    Actually you should pass the data to Threshold_Demo() as parameter:

                    Mainwindow::onTrackBall_clicked()
                    {
                        Mat src, src_gray;
                        ...
                        Threshold_Demo(src_grey, /*what else needs to be passed from MainWindow to this function*/);
                        ...
                    }
                    
                    void Threshold_Demo(Mat &src_grey, ...)
                    {
                    

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

                    G 1 Reply Last reply 22 Jul 2016, 11:13
                    0
                    • J jsulm
                      22 Jul 2016, 10:45

                      @gauravsharma0190 No, I don't mean that they should be different. I mean the opposite: they need to be the same (but they are not).
                      Local variable is a variable which is only visible in a certain scope, for example in a function. The variables in ontrack.cpp are only visible in ontrack.cpp, but not in MainWindow. In Mainwindow::onTrackBall_clicked() you declare OTHER variables with SAME names.
                      What do you think which src_grey is used in Threshold_Demo( int, void* )? Is it the one from MainWindow::onTrackBall_clicked() or the one from ontrack.cpp?

                      // src_gray here is not the same as in MainWindow::onTrackBall_clicked()
                      Mat src_gray,dst;
                      void Threshold_Demo( int, void* )
                      {
                        threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
                      }
                      

                      Actually you should pass the data to Threshold_Demo() as parameter:

                      Mainwindow::onTrackBall_clicked()
                      {
                          Mat src, src_gray;
                          ...
                          Threshold_Demo(src_grey, /*what else needs to be passed from MainWindow to this function*/);
                          ...
                      }
                      
                      void Threshold_Demo(Mat &src_grey, ...)
                      {
                      
                      G Offline
                      G Offline
                      gauravsharma0190
                      wrote on 22 Jul 2016, 11:13 last edited by
                      #93

                      @jsulm
                      OK it means src_gray value in .cpp file should be same as in mainwindow::on_Track clicked() src_gray value.
                      Actually src_gray is image array.
                      I did it by Define the value of src_grey in function as
                      src=imread("/file.jpg);
                      cvtColor( src, src_gray, CV_BGR2GRAY );
                      so i will get src_gray value.

                      1 Reply Last reply
                      0

                      93/93

                      22 Jul 2016, 11:13

                      • Login

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