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

Picture

Scheduled Pinned Locked Moved Solved General and Desktop
82 Posts 7 Posters 46.4k Views 3 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.
  • VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by
    #60

    Getting warmer and warmer

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    1 Reply Last reply
    1
    • P Offline
      P Offline
      Payx
      wrote on last edited by
      #61

      I got :

      QColor domicolor=dominantColor(pixi,point,size);
      

      The returned color is "domicolor", so i put domicolor in :

      void fillSection(pixi, point, size, domicolor);
      
      1 Reply Last reply
      2
      • VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #62

        sooo close!
        http://www.cplusplus.com/doc/tutorial/functions/#void

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        P 1 Reply Last reply
        1
        • VRoninV VRonin

          sooo close!
          http://www.cplusplus.com/doc/tutorial/functions/#void

          P Offline
          P Offline
          Payx
          wrote on last edited by Payx
          #63

          I call her with just :

          fillSection(pixi,point,size,domicolor);
          
          VRoninV 1 Reply Last reply
          3
          • P Payx

            I call her with just :

            fillSection(pixi,point,size,domicolor);
            
            VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #64

            @Payx Bingo!

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            1 Reply Last reply
            2
            • P Offline
              P Offline
              Payx
              wrote on last edited by
              #65

              I try to change the rectSize with 100 x 100.

              my first function is :

              void MainWindow::on_push_clicked()
              {
              	QString fileName = QFileDialog::getOpenFileName(this,
              	tr("Open Image"), "/", tr("Image Files (*.png *.jpg *.bmp)"));
              	QPixmap pix(fileName);
              	ui->label->setPixmap(pix);
              	const QSize s = pix.size();
              	QImage pixi = QImage(pix.toImage());
              
              	ui->label_2->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) );
              
              }
              

              It load an image with an explorer file.

              But the picture dont change at all when i click on the push2

              1 Reply Last reply
              0
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by VRonin
                #66

                I did not say you were done, just that you were on the right path.

                from the code you posted it's clear you did not grasp scoping 100% so i'll repost the link: http://www.cplusplus.com/doc/tutorial/namespaces/#scopes

                pix and pixi die as soon as MainWindow::on_push_clicked() terminates

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                P 1 Reply Last reply
                0
                • VRoninV VRonin

                  I did not say you were done, just that you were on the right path.

                  from the code you posted it's clear you did not grasp scoping 100% so i'll repost the link: http://www.cplusplus.com/doc/tutorial/namespaces/#scopes

                  pix and pixi die as soon as MainWindow::on_push_clicked() terminates

                  P Offline
                  P Offline
                  Payx
                  wrote on last edited by
                  #67

                  @VRonin Yes but in my .h i add QImage pixi thats not correct?

                  1 Reply Last reply
                  0
                  • VRoninV Offline
                    VRoninV Offline
                    VRonin
                    wrote on last edited by
                    #68

                    I'm surprised your compiler doesn't yell about redefinition (I probably know why but that's not the point here). I'send you to http://www.cplusplus.com/doc/tutorial/namespaces/#scopes once again

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    kshegunovK P 2 Replies Last reply
                    0
                    • VRoninV VRonin

                      I'm surprised your compiler doesn't yell about redefinition (I probably know why but that's not the point here). I'send you to http://www.cplusplus.com/doc/tutorial/namespaces/#scopes once again

                      kshegunovK Offline
                      kshegunovK Offline
                      kshegunov
                      Moderators
                      wrote on last edited by
                      #69

                      @VRonin said in Picture:

                      I'm surprised your compiler doesn't yell about redefinition

                      Not redefinition, shadowing, hence no yelling. :)

                      Read and abide by the Qt Code of Conduct

                      VRoninV 1 Reply Last reply
                      2
                      • kshegunovK kshegunov

                        @VRonin said in Picture:

                        I'm surprised your compiler doesn't yell about redefinition

                        Not redefinition, shadowing, hence no yelling. :)

                        VRoninV Offline
                        VRoninV Offline
                        VRonin
                        wrote on last edited by
                        #70

                        @kshegunov said in Picture:

                        shadowing

                        The case @kshegunov is explaining is in the 3rd code block of the link above:

                        // inner block scopes
                        #include <iostream>
                        using namespace std;
                        
                        int main () {
                          int x = 10;
                          int y = 20;
                          {
                            int x;   // ok, inner scope.
                            x = 50;  // sets value to inner x
                            y = 50;  // sets value to (outer) y
                            cout << "inner block:\n";
                            cout << "x: " << x << '\n';
                            cout << "y: " << y << '\n';
                          }
                          cout << "outer block:\n";
                          cout << "x: " << x << '\n';
                          cout << "y: " << y << '\n';
                          return 0;
                        }
                        

                        This means I should go back to that tutorial myself

                        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                        ~Napoleon Bonaparte

                        On a crusade to banish setIndexWidget() from the holy land of Qt

                        1 Reply Last reply
                        2
                        • VRoninV VRonin

                          I'm surprised your compiler doesn't yell about redefinition (I probably know why but that's not the point here). I'send you to http://www.cplusplus.com/doc/tutorial/namespaces/#scopes once again

                          P Offline
                          P Offline
                          Payx
                          wrote on last edited by
                          #71

                          @VRonin so if i want use my picture in an other function i have to declare it before my function as i did for

                          QColor dominantColor(const QImage& image, const QPoint& topLeft, const QSize& rectSize);

                          so i have to add a line code QImage pixi in my .cpp ?

                          why not in my .h, and why

                          QColor dominantColor
                          

                          dont work in my .h too ?

                          1 Reply Last reply
                          0
                          • VRoninV Offline
                            VRoninV Offline
                            VRonin
                            wrote on last edited by
                            #72

                            Ok, this has become too chatty, let's make it more structured before we both get banned.

                            • Put dominantColor and fillSection code from either me or @mrjj at the top of your .cpp file, just below the #includes no need to declare them in advance in this case
                            • in the private: section of your .h file add QImage m_baseImag;
                            • in on_push_clicked load the image from file and store it in m_baseImag then use QPixmap::fromImage(m_baseImag) to display the image in the QLabel
                            • in on_push2_clicked iterate over every 4x4 square of your picture calling the two functions:
                            for (int i=0;i<m_baseImag.width();i+=4){
                                       for (int j=0;j<m_baseImag.height();j+=4){
                            fillSection(m_baseImag,QPoint(i,j),QSize(4,4),dominantColour(m_baseImag,QPoint(i,j),QSize(4,4)));
                            }}
                            
                            • use QPixmap::fromImage(m_baseImag) to display the new image in another QLabel

                            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                            ~Napoleon Bonaparte

                            On a crusade to banish setIndexWidget() from the holy land of Qt

                            1 Reply Last reply
                            1
                            • P Offline
                              P Offline
                              Payx
                              wrote on last edited by Payx
                              #73

                              Hello,

                              I have 0 error but it didn't work.

                              here my code

                              void MainWindow::on_push_clicked()
                              {
                              	QString fileName = QFileDialog::getOpenFileName(this,
                              	tr("Open Image"), "/", tr("Image Files (*.png *.jpg *.bmp)"));
                              	QPixmap pix(fileName);
                              	ui->label->setPixmap(pix);
                              	const QSize s = pix.size();
                              	QImage pixi = QImage(pix.toImage());
                              
                              	
                              
                              }
                              
                              void MainWindow::on_push2_clicked()
                              {
                              	QPoint point(0,0);
                              	QSize size(4,4);
                              	for(int i=0;i<pixi.width();i+=4){
                              		for(int j=0;j<pixi.height();j+=4){
                              			fillSection(pixi,point,size,dominantColor(pixi,point,size));
                              		}
                              	}
                              
                              	QPixmap pixa=QPixmap::fromImage(pixi);
                              
                              	ui->label_2->setPixmap(pixa);
                              }
                              

                              In my .h i declared

                              private:
                                 Ui::MainWindow *ui;
                                 QImage pixi;
                              

                              pixi is the name of my picture (= m_baseImag)

                              i display pixa (Qpix from pixi) in the same label as pixi (dont know if i can do that)

                              1 Reply Last reply
                              0
                              • mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #74

                                Hi
                                Good work.
                                in here
                                void MainWindow::on_push_clicked()
                                {
                                ......
                                QImage pixi = QImage(pix.toImage()); // This looks like a local variable? ( die by scope)
                                }

                                Did you mean to use the one from .H ?

                                so
                                pixi = QImage(pix.toImage());

                                1 Reply Last reply
                                1
                                • P Offline
                                  P Offline
                                  Payx
                                  wrote on last edited by
                                  #75

                                  i changed my code by using pixi = QImage(pix.toImage());

                                  and in my .h i got QImage pixi.

                                  I try to fix my rectSize to 15x15

                                  And my picture at the end is the same, she changed a little (she got a blue pixel in the top left

                                  1 Reply Last reply
                                  0
                                  • VRoninV Offline
                                    VRoninV Offline
                                    VRonin
                                    wrote on last edited by
                                    #76

                                    you never update point in your loop. it's always 0,0 it should be i,j

                                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                    ~Napoleon Bonaparte

                                    On a crusade to banish setIndexWidget() from the holy land of Qt

                                    P 1 Reply Last reply
                                    2
                                    • VRoninV VRonin

                                      you never update point in your loop. it's always 0,0 it should be i,j

                                      P Offline
                                      P Offline
                                      Payx
                                      wrote on last edited by Payx
                                      #77
                                      This post is deleted!
                                      1 Reply Last reply
                                      0
                                      • P Offline
                                        P Offline
                                        Payx
                                        wrote on last edited by
                                        #78

                                        Ok after long hours, i fixed it.

                                        Thank you very much for your time in my project.

                                        But i have a little question :

                                        In the code it only returns Red, Blue or Green.

                                        Do you have a function who return a lot of color, like if in my rect the most principal color is grey (for example) what could i do to add a lot of color ?

                                        At the end i will have a picture more pixelated but that i can recognize

                                        kshegunovK 1 Reply Last reply
                                        0
                                        • mrjjM Offline
                                          mrjjM Offline
                                          mrjj
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #79

                                          Hi

                                          • if in my rect the most principal color is grey

                                          That is just values for R,G,B. still.

                                          1 Reply Last reply
                                          1

                                          • Login

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