Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Matching 2 .tiff images pixel-by-pixel
Qt 6.12 LTS is out! See what's new in the release blog

Matching 2 .tiff images pixel-by-pixel

Scheduled Pinned Locked Moved Solved General and Desktop
55 Posts 5 Posters 43.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.
  • J Offline
    J Offline
    john_hobbyist
    wrote on last edited by john_hobbyist
    #18

    I added them to the main class. I am trying to call the methods, like this:

    self.mousePressEvent(event)
    self.mouseMoveEvent(event)
    

    etc.

    But what do I put inside/instead of "event"?

    mrjjM 1 Reply Last reply
    0
    • J john_hobbyist

      I added them to the main class. I am trying to call the methods, like this:

      self.mousePressEvent(event)
      self.mouseMoveEvent(event)
      

      etc.

      But what do I put inside/instead of "event"?

      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #19

      @john_hobbyist

      The code you showed higher up to drive the rubber band.
      Or the docs @SGaist points to. they explain in detail what is needed.

      def mousePressEvent(self, event):   ///// this set the start location of the band
          self.origin = event.pos()
          self.rubberband.setGeometry(
              QtCore.QRect(self.origin, QtCore.QSize()))
          self.rubberband.show()
          QtGui.QWidget.mousePressEvent(self, event)
      
      def mouseMoveEvent(self, event): // this makes the band follow the mouse to adjust the size
          if self.rubberband.isVisible():
              self.rubberband.setGeometry(
                  QtCore.QRect(self.origin, event.pos()).normalized())
          QtGui.QWidget.mouseMoveEvent(self, event)
      
      def mouseReleaseEvent(self, event): // this is the end of the operation and you use the rectange defined by the band
          if self.rubberband.isVisible():
              self.rubberband.hide()
         rect = self.rubberband.geometry()
      
       ... then use rect for whatever you need
      
      1 Reply Last reply
      2
      • J Offline
        J Offline
        john_hobbyist
        wrote on last edited by john_hobbyist
        #20

        @mrjj: Thanks for your help! I am searching all morning. Here https://doc.qt.io/qtforpython/PySide6/QtWidgets/QRubberBand.html#more I don't see something about what to put inside the "event". The only I can understand is to use this inside events: https://doc.qt.io/qtforpython-5/PySide2/QtGui/QMouseEvent.html

        mrjjM 1 Reply Last reply
        0
        • J john_hobbyist

          @mrjj: Thanks for your help! I am searching all morning. Here https://doc.qt.io/qtforpython/PySide6/QtWidgets/QRubberBand.html#more I don't see something about what to put inside the "event". The only I can understand is to use this inside events: https://doc.qt.io/qtforpython-5/PySide2/QtGui/QMouseEvent.html

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #21

          @john_hobbyist

          Im not sure what you refer too ?

          def mouseReleaseEvent(self, event): <<< this event ? the paramter ?

          To use the rubberband, we use 3 functions as shown.

          1 Reply Last reply
          1
          • J Offline
            J Offline
            john_hobbyist
            wrote on last edited by john_hobbyist
            #22

            @mrjj
            Yes, I try this:

            self.mousePressEvent(event)
            

            and the code requires to put something instead of "event". This is the error:

            File "code.py", line 310, in __init__
              self.mousePressEvent(event)
            NameError: name 'event' is not defined
            
            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #23

              Where are you calling these methods from ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              1
              • J Offline
                J Offline
                john_hobbyist
                wrote on last edited by john_hobbyist
                #24

                @SGaist : Inside this method:

                def __init__(self, parent=None):
                   . . . 
                   (code)
                   . . . 
                   self.mousePressEvent(event)
                   self.mouseMoveEvent(event)
                   self.mouseReleaseEvent(event)
                
                . . . 
                
                (other methods + code per method)
                
                . . . 
                
                def mousePressEvent(self, event):
                   (code)
                
                def mouseMoveEvent(self, event):
                   (code)
                
                def mouseReleaseEvent(self,event):
                   (code)
                   
                

                which the first method of the class. Any idea?

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #25

                  That's not how it works. These methods are automatically called when appropriate.

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  J 1 Reply Last reply
                  1
                  • SGaistS SGaist

                    That's not how it works. These methods are automatically called when appropriate.

                    J Offline
                    J Offline
                    john_hobbyist
                    wrote on last edited by john_hobbyist
                    #26

                    @SGaist : So I remove these lines?

                    self.mousePressEvent(event)
                    self.mouseMoveEvent(event)
                    self.mouseReleaseEvent(event)
                    

                    What should I change?

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #27

                      Implement the methods like shown in the QRubberBand class documentation.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      1
                      • J Offline
                        J Offline
                        john_hobbyist
                        wrote on last edited by
                        #28

                        @SGaist: Ok, I followed this: https://doc.qt.io/qtforpython/PySide6/QtWidgets/QRubberBand.html#qrubberband I put them into the Class. And that's it?

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #29

                          That's the base yes.

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          1
                          • J Offline
                            J Offline
                            john_hobbyist
                            wrote on last edited by john_hobbyist
                            #30

                            @SGaist: It seems to get response, although I do not see the red rectangle... But the mouse events seem to recognize when I press or when I release the mouse. But I need to install rubberband because I get this error:

                            File "code.py", line 174, in mouseMoveEvent
                              rubberBand.setGeometry(QRect(origin, event.pos()).normalized())
                            NameError: name 'rubberBand' is not defined
                            

                            I am trying to fix it though! THANX!!!

                            jsulmJ 1 Reply Last reply
                            0
                            • J john_hobbyist

                              @SGaist: It seems to get response, although I do not see the red rectangle... But the mouse events seem to recognize when I press or when I release the mouse. But I need to install rubberband because I get this error:

                              File "code.py", line 174, in mouseMoveEvent
                                rubberBand.setGeometry(QRect(origin, event.pos()).normalized())
                              NameError: name 'rubberBand' is not defined
                              

                              I am trying to fix it though! THANX!!!

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

                              @john_hobbyist said in Matching 2 .tiff images pixel-by-pixel:

                              NameError: name 'rubberBand' is not defined

                              So, did you define rubberBand?

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

                              1 Reply Last reply
                              1
                              • J Offline
                                J Offline
                                john_hobbyist
                                wrote on last edited by john_hobbyist
                                #32

                                @jsulm: I try this solution from here: https://stackoverflow.com/questions/59899103/python-3-6-how-to-install-rubberband I haven't found a working solution but I am trying, because it has many! Any other idea?

                                jsulmJ 1 Reply Last reply
                                0
                                • J john_hobbyist

                                  @jsulm: I try this solution from here: https://stackoverflow.com/questions/59899103/python-3-6-how-to-install-rubberband I haven't found a working solution but I am trying, because it has many! Any other idea?

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

                                  @john_hobbyist You did not answer the question...
                                  The error you get says that rubberBand was not defined. It has nothing to do with installing anything.

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

                                  1 Reply Last reply
                                  0
                                  • J Offline
                                    J Offline
                                    john_hobbyist
                                    wrote on last edited by
                                    #34

                                    @jsulm: I added this:

                                    import rubberband
                                    

                                    but again does not work! What should I do?

                                    jsulmJ 1 Reply Last reply
                                    0
                                    • J john_hobbyist

                                      @jsulm: I added this:

                                      import rubberband
                                      

                                      but again does not work! What should I do?

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

                                      @john_hobbyist Please read more carefully! Nobody is talking about "rubberband"!
                                      The question was about: "NameError: name 'rubberBand' is not defined"
                                      rubberband != rubberBand
                                      So, one more time I repeat the question: was rubberBand defined anywhere?

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

                                      1 Reply Last reply
                                      1
                                      • SGaistS Offline
                                        SGaistS Offline
                                        SGaist
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #36

                                        There are some errors in the python document snippet that will be fixed.

                                        Here's an example:

                                        import sys
                                        
                                        from PySide2.QtCore import QRect
                                        from PySide2.QtCore import QSize
                                        from PySide2.QtWidgets import QWidget
                                        from PySide2.QtWidgets import QRubberBand
                                        from PySide2.QtWidgets import QApplication
                                        
                                        class Widget(QWidget):
                                            def __init__(self, parent=None):
                                                super().__init__(parent)
                                        
                                                self.rubberBand = None
                                                self.origin = None
                                        
                                            def mousePressEvent(self, event):
                                                self.origin = event.pos()
                                                if not self.rubberBand:
                                                    self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
                                                self.rubberBand.setGeometry(QRect(self.origin, QSize()))
                                                self.rubberBand.show()
                                        
                                            def mouseMoveEvent(self, event):
                                                self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
                                        
                                            def mouseReleaseEvent(self, event):
                                                self.rubberBand.hide()
                                                # determine selection, for example using QRect.intersects()
                                                # and QRect.contains().
                                        
                                        if __name__ == "__main__":
                                            app = QApplication(sys.argv)
                                            widget = Widget()
                                            widget.show()
                                            sys.exit(app.exec_())
                                        

                                        On a side note, it looks like you are a beginner with Python, I would recommend getting the basics first before going further.

                                        Interested in AI ? www.idiap.ch
                                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        J 1 Reply Last reply
                                        3
                                        • J Offline
                                          J Offline
                                          john_hobbyist
                                          wrote on last edited by
                                          #37

                                          @jsulm : No

                                          @SGaist: Thanks, I am looking at it...

                                          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
                                          • Unsolved