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. A camera problem.
Forum Updated to NodeBB v4.3 + New Features

A camera problem.

Scheduled Pinned Locked Moved Unsolved General and Desktop
91 Posts 7 Posters 18.7k Views 2 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.
  • SGaistS SGaist

    Hi,

    Your tight loop does not allow Qt's event loop to run. You should either use an event loop to "block" the execution or properly implement this through signals and slots.

    J Offline
    J Offline
    jenya7
    wrote on last edited by
    #46

    @SGaist said in A camera problem.:

    Hi,

    Your tight loop does not allow Qt's event loop to run. You should either use an event loop to "block" the execution or properly implement this through signals and slots.

    OK. Did so

    connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);
    
    void Camera::takeImage()
    {
        m_camera->start();
        m_camera->searchAndLock();
    
       // while (m_imageCapture->isReadyForCapture() == false) ;
    
        //m_isCapturingImage = true;
        //m_imageCapture->capture();
    
        //m_camera->unlock();
    }
    
    void Camera::IsReadyForCapture()
    {
        m_isCapturingImage = true;
        m_imageCapture->capture();
    
        m_camera->unlock();
    }
    

    It never happens.

    JonBJ 1 Reply Last reply
    0
    • J jenya7

      @SGaist said in A camera problem.:

      Hi,

      Your tight loop does not allow Qt's event loop to run. You should either use an event loop to "block" the execution or properly implement this through signals and slots.

      OK. Did so

      connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);
      
      void Camera::takeImage()
      {
          m_camera->start();
          m_camera->searchAndLock();
      
         // while (m_imageCapture->isReadyForCapture() == false) ;
      
          //m_isCapturingImage = true;
          //m_imageCapture->capture();
      
          //m_camera->unlock();
      }
      
      void Camera::IsReadyForCapture()
      {
          m_isCapturingImage = true;
          m_imageCapture->capture();
      
          m_camera->unlock();
      }
      

      It never happens.

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #47

      @jenya7 said in A camera problem.:

      connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);

      Did this go through without complaint? I am "surprised", as QCameraImageCapture::isReadyForCapture() is not a signal, would have thought connect() would barf on that.... Try using void QCameraImageCapture::readyForCaptureChanged(bool ready) signal?

      J 1 Reply Last reply
      2
      • JonBJ JonB

        @jenya7 said in A camera problem.:

        connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);

        Did this go through without complaint? I am "surprised", as QCameraImageCapture::isReadyForCapture() is not a signal, would have thought connect() would barf on that.... Try using void QCameraImageCapture::readyForCaptureChanged(bool ready) signal?

        J Offline
        J Offline
        jenya7
        wrote on last edited by
        #48

        @JonB said in A camera problem.:

        @jenya7 said in A camera problem.:

        connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);

        Did this go through without complaint? I am "surprised", as QCameraImageCapture::isReadyForCapture() is not a signal, would have thought connect() would barf on that.... Try using void QCameraImageCapture::readyForCaptureChanged(bool ready) signal?

        did so

        connect(m_imageCapture.data(), &QCameraImageCapture::readyForCaptureChanged, this, &Camera::ReadyForCaptureChanged);
        
        void Camera::takeImage()
        {
            m_camera->start();
            m_camera->searchAndLock();
        }
        
        void Camera::ReadyForCaptureChanged(bool ready)
        {
            m_isCapturingImage = true;
            m_imageCapture->capture();
        
            m_camera->unlock();
        }
        

        never get into ReadyForCaptureChanged

        jsulmJ 1 Reply Last reply
        0
        • J jenya7

          @JonB said in A camera problem.:

          @jenya7 said in A camera problem.:

          connect(m_imageCapture.data(), &QCameraImageCapture::isReadyForCapture, this, &Camera::IsReadyForCapture);

          Did this go through without complaint? I am "surprised", as QCameraImageCapture::isReadyForCapture() is not a signal, would have thought connect() would barf on that.... Try using void QCameraImageCapture::readyForCaptureChanged(bool ready) signal?

          did so

          connect(m_imageCapture.data(), &QCameraImageCapture::readyForCaptureChanged, this, &Camera::ReadyForCaptureChanged);
          
          void Camera::takeImage()
          {
              m_camera->start();
              m_camera->searchAndLock();
          }
          
          void Camera::ReadyForCaptureChanged(bool ready)
          {
              m_isCapturingImage = true;
              m_imageCapture->capture();
          
              m_camera->unlock();
          }
          

          never get into ReadyForCaptureChanged

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

          @jenya7 said in A camera problem.:

          never get into ReadyForCaptureChanged

          Sure? How did you verify that?

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

          J 1 Reply Last reply
          0
          • jsulmJ jsulm

            @jenya7 said in A camera problem.:

            never get into ReadyForCaptureChanged

            Sure? How did you verify that?

            J Offline
            J Offline
            jenya7
            wrote on last edited by jenya7
            #50

            @jsulm said in A camera problem.:

            @jenya7 said in A camera problem.:

            never get into ReadyForCaptureChanged

            Sure? How did you verify that?

            I set a break point inside. I see it goes into takeImage but never gets to ReadyForCaptureChanged
            Now I don't get any errors but it prints
            Starting camera without viewfinder available
            Is it OK?

            J.HilkJ JonBJ 2 Replies Last reply
            0
            • J jenya7

              @jsulm said in A camera problem.:

              @jenya7 said in A camera problem.:

              never get into ReadyForCaptureChanged

              Sure? How did you verify that?

              I set a break point inside. I see it goes into takeImage but never gets to ReadyForCaptureChanged
              Now I don't get any errors but it prints
              Starting camera without viewfinder available
              Is it OK?

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #51

              @jenya7
              maybe its a typical object lifetime problem.

              where does your Camera instance exist/live ?


              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              J 1 Reply Last reply
              0
              • J jenya7

                @jsulm said in A camera problem.:

                @jenya7 said in A camera problem.:

                never get into ReadyForCaptureChanged

                Sure? How did you verify that?

                I set a break point inside. I see it goes into takeImage but never gets to ReadyForCaptureChanged
                Now I don't get any errors but it prints
                Starting camera without viewfinder available
                Is it OK?

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #52

                @jenya7
                Just to make sure, what happens in your code after you call your takeImage()? Do you allow the main event loop to run, or do you have other code which does not?

                J 1 Reply Last reply
                0
                • J.HilkJ J.Hilk

                  @jenya7
                  maybe its a typical object lifetime problem.

                  where does your Camera instance exist/live ?

                  J Offline
                  J Offline
                  jenya7
                  wrote on last edited by
                  #53

                  @J-Hilk said in A camera problem.:

                  @jenya7
                  maybe its a typical object lifetime problem.

                  where does your Camera instance exist/live ?

                  It's a global object. I call it's methods from a command line parser object.

                  J.HilkJ 1 Reply Last reply
                  0
                  • J jenya7

                    @J-Hilk said in A camera problem.:

                    @jenya7
                    maybe its a typical object lifetime problem.

                    where does your Camera instance exist/live ?

                    It's a global object. I call it's methods from a command line parser object.

                    J.HilkJ Offline
                    J.HilkJ Offline
                    J.Hilk
                    Moderators
                    wrote on last edited by
                    #54

                    @jenya7 soooo, inside main() ?


                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                    Q: What's that?
                    A: It's blue light.
                    Q: What does it do?
                    A: It turns blue.

                    J 1 Reply Last reply
                    0
                    • JonBJ JonB

                      @jenya7
                      Just to make sure, what happens in your code after you call your takeImage()? Do you allow the main event loop to run, or do you have other code which does not?

                      J Offline
                      J Offline
                      jenya7
                      wrote on last edited by
                      #55

                      @JonB said in A camera problem.:

                      @jenya7
                      Just to make sure, what happens in your code after you call your takeImage()? Do you allow the main event loop to run, or do you have other code which does not?

                      well..I guess it's running, cause my command lines parser reacts and process my commands.

                      1 Reply Last reply
                      0
                      • J.HilkJ J.Hilk

                        @jenya7 soooo, inside main() ?

                        J Offline
                        J Offline
                        jenya7
                        wrote on last edited by
                        #56

                        @J-Hilk said in A camera problem.:

                        @jenya7 soooo, inside main() ?

                        actually for debug purposes I instantiated it in other module - command line parser, but it's static and never goes out of scope.

                        J.HilkJ 1 Reply Last reply
                        0
                        • J jenya7

                          @J-Hilk said in A camera problem.:

                          @jenya7 soooo, inside main() ?

                          actually for debug purposes I instantiated it in other module - command line parser, but it's static and never goes out of scope.

                          J.HilkJ Offline
                          J.HilkJ Offline
                          J.Hilk
                          Moderators
                          wrote on last edited by
                          #57

                          @jenya7

                          static

                          thats actually forbidden, no QObject based object must be created before the QCoreApplication instance. Static objects will be created before the QCoreApplication instance.


                          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                          Q: What's that?
                          A: It's blue light.
                          Q: What does it do?
                          A: It turns blue.

                          J 1 Reply Last reply
                          0
                          • J.HilkJ J.Hilk

                            @jenya7

                            static

                            thats actually forbidden, no QObject based object must be created before the QCoreApplication instance. Static objects will be created before the QCoreApplication instance.

                            J Offline
                            J Offline
                            jenya7
                            wrote on last edited by
                            #58

                            @J-Hilk said in A camera problem.:

                            @jenya7

                            static

                            thats actually forbidden, no QObject based object must be created before the QCoreApplication instance. Static objects will be created before the QCoreApplication instance.

                            I mean it it's created without static attribute, but i's not locally allocated.

                            J 1 Reply Last reply
                            0
                            • J jenya7

                              @J-Hilk said in A camera problem.:

                              @jenya7

                              static

                              thats actually forbidden, no QObject based object must be created before the QCoreApplication instance. Static objects will be created before the QCoreApplication instance.

                              I mean it it's created without static attribute, but i's not locally allocated.

                              J Offline
                              J Offline
                              jenya7
                              wrote on last edited by
                              #59

                              If I only could drill down to the cause of
                              "Image Capture Error: Camera not ready"
                              What makes it not ready for m_imageCapture...

                              JonBJ 1 Reply Last reply
                              0
                              • J jenya7

                                If I only could drill down to the cause of
                                "Image Capture Error: Camera not ready"
                                What makes it not ready for m_imageCapture...

                                JonBJ Offline
                                JonBJ Offline
                                JonB
                                wrote on last edited by
                                #60

                                @jenya7
                                I know nothing about cameras and captures, so no idea about causes. I will say your definition of void Camera::ReadyForCaptureChanged(bool ready) is wrong, since it does not examine the ready parameter value. But if you say it's never hit that is moot.

                                J 1 Reply Last reply
                                0
                                • JonBJ JonB

                                  @jenya7
                                  I know nothing about cameras and captures, so no idea about causes. I will say your definition of void Camera::ReadyForCaptureChanged(bool ready) is wrong, since it does not examine the ready parameter value. But if you say it's never hit that is moot.

                                  J Offline
                                  J Offline
                                  jenya7
                                  wrote on last edited by
                                  #61

                                  @JonB said in A camera problem.:

                                  @jenya7
                                  I know nothing about cameras and captures, so no idea about causes. I will say your definition of void Camera::ReadyForCaptureChanged(bool ready) is wrong, since it does not examine the ready parameter value. But if you say it's never hit that is moot.

                                  Yes. But it never hits if (ready) line.

                                  void Camera::ReadyForCaptureChanged(bool ready)
                                  {
                                      if (ready)
                                      {
                                          m_isCapturingImage = true;
                                          m_imageCapture->capture();
                                  
                                          m_camera->unlock();
                                      }
                                  }
                                  
                                  J.HilkJ JonBJ 2 Replies Last reply
                                  0
                                  • J jenya7

                                    @JonB said in A camera problem.:

                                    @jenya7
                                    I know nothing about cameras and captures, so no idea about causes. I will say your definition of void Camera::ReadyForCaptureChanged(bool ready) is wrong, since it does not examine the ready parameter value. But if you say it's never hit that is moot.

                                    Yes. But it never hits if (ready) line.

                                    void Camera::ReadyForCaptureChanged(bool ready)
                                    {
                                        if (ready)
                                        {
                                            m_isCapturingImage = true;
                                            m_imageCapture->capture();
                                    
                                            m_camera->unlock();
                                        }
                                    }
                                    
                                    J.HilkJ Offline
                                    J.HilkJ Offline
                                    J.Hilk
                                    Moderators
                                    wrote on last edited by
                                    #62

                                    @jenya7
                                    do you call show() on your viewfinder instance ? It will probably never change its state, if the viewfinder is not "visible"


                                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                    Q: What's that?
                                    A: It's blue light.
                                    Q: What does it do?
                                    A: It turns blue.

                                    J 1 Reply Last reply
                                    0
                                    • J jenya7

                                      @JonB said in A camera problem.:

                                      @jenya7
                                      I know nothing about cameras and captures, so no idea about causes. I will say your definition of void Camera::ReadyForCaptureChanged(bool ready) is wrong, since it does not examine the ready parameter value. But if you say it's never hit that is moot.

                                      Yes. But it never hits if (ready) line.

                                      void Camera::ReadyForCaptureChanged(bool ready)
                                      {
                                          if (ready)
                                          {
                                              m_isCapturingImage = true;
                                              m_imageCapture->capture();
                                      
                                              m_camera->unlock();
                                          }
                                      }
                                      
                                      JonBJ Offline
                                      JonBJ Offline
                                      JonB
                                      wrote on last edited by
                                      #63

                                      @jenya7
                                      Yes, at least the code is right, but won't help if that never gets hit.
                                      Bearing in mind I know nothing about cameras, why did you comment out the m_camera->isCaptureModeSupported(...) lines, what do these actually return? If they return false presumably that would explain why you never get QCameraImageCapture::readyForCaptureChanged ?

                                      Oh I see @J-Hilk has chimed in with some knowledge of this camera stuff....

                                      1 Reply Last reply
                                      0
                                      • J.HilkJ J.Hilk

                                        @jenya7
                                        do you call show() on your viewfinder instance ? It will probably never change its state, if the viewfinder is not "visible"

                                        J Offline
                                        J Offline
                                        jenya7
                                        wrote on last edited by jenya7
                                        #64

                                        @J-Hilk said in A camera problem.:

                                        @jenya7
                                        do you call show() on your viewfinder instance ? It will probably never change its state, if the viewfinder is not "visible"

                                        It can be an issue.
                                        Although I create an object in mainwindow.cpp

                                        QCameraViewfinder *v_finder;
                                        
                                        MainWindow::MainWindow(QWidget *parent) :
                                            QMainWindow(parent),
                                            ui(new Ui::MainWindow)
                                        {
                                            v_finder= new QCameraViewfinder(this);
                                        
                                            ui->setupUi(this);
                                            ui->textEditTerminalTx->installEventFilter(this);
                                        }
                                        

                                        It's not physically allocated. The app wasn't suppose to have such widget.
                                        So on v_finder->show() I get an exception.
                                        Is it possible to emulate the viewfinder ?

                                        J jsulmJ JonBJ 3 Replies Last reply
                                        0
                                        • J jenya7

                                          @J-Hilk said in A camera problem.:

                                          @jenya7
                                          do you call show() on your viewfinder instance ? It will probably never change its state, if the viewfinder is not "visible"

                                          It can be an issue.
                                          Although I create an object in mainwindow.cpp

                                          QCameraViewfinder *v_finder;
                                          
                                          MainWindow::MainWindow(QWidget *parent) :
                                              QMainWindow(parent),
                                              ui(new Ui::MainWindow)
                                          {
                                              v_finder= new QCameraViewfinder(this);
                                          
                                              ui->setupUi(this);
                                              ui->textEditTerminalTx->installEventFilter(this);
                                          }
                                          

                                          It's not physically allocated. The app wasn't suppose to have such widget.
                                          So on v_finder->show() I get an exception.
                                          Is it possible to emulate the viewfinder ?

                                          J Offline
                                          J Offline
                                          jenya7
                                          wrote on last edited by
                                          #65
                                          This post is deleted!
                                          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