Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Find the dominat color from the image

Find the dominat color from the image

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
6 Posts 3 Posters 886 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.
  • S Offline
    S Offline
    swansorter
    wrote on last edited by swansorter
    #1

    hai
    i am able get the dominant color from image.but i am not able to get the parcentage of color.
    this is my code get the dominant color from a image

    cv::Matsource_img=cv::imread("detect.bmp",1); // Read image from path
     
        // Serialize, float
        cv::Mat data = source_img.reshape(1, source_img.total());
        data.convertTo(data, CV_32F);
        // Perform k-Means
        int k = 10;
        std::vector<int> labels;
        cv::Mat3f centers;
        cv::kmeans(data, k, labels, cv::TermCriteria(), 1, cv::KMEANS_PP_CENTERS, 	centers);
    
        // Make a poster! (Clustering)
        for (int i = 0; i < (int)labels.size(); ++i) {
            data.at<float>(i, 0) = centers.at<float>(labels[i], 0);
            data.at<float>(i, 1) = centers.at<float>(labels[i], 1);
            data.at<float>(i, 2) = centers.at<float>(labels[i], 2);
           // qDebug()<<labels.size();
        }
        // Un-Serialize, un-float
        cv::Mat destination = data.reshape(3, source_img.rows);
        destination.convertTo(source_img, CV_8UC3);
        std::sort(centers.begin(), centers.end(),
                [](const cv::Vec3f &a, const cv::Vec3f &b) -> bool
                { return a[0] + a[1] + a[2] > b[0] + b[1] + b[2]; }
            );
        // Paint!
        QLabel *palette[6] = {ui->b_1, ui->b_2, ui->b_3, ui->b_4, ui->b_5, ui->b_6};
        const int p = 0; // Offset
        for(int i = 0; i < 6; ++i) {
            // Set back color of label. Lazy ass way to show the colors
            std::stringstream back_clr;
            back_clr << centers.at<float>(i + p, 2) << "," << centers.at<float>(i + p, 1) << "," << centers.at<float>(i + p, 0);
            palette[i]->setStyleSheet(QString::fromStdString("background-color:rgb(" + back_clr.str() + ");"));
            qInfo()<< QString::fromStdString(back_clr.str() );
        }
    

    this my output:
    Screenshot from 2021-04-09 16-51-30.png

    "238.594,229.237,205.951"
    "213.832,204.984,180.845"
    "216.373,190.585,84.8002"
    "218.931,132.845,105.804"
    "138.95,143.804,118.714"
    "198.743,110.853,46.7355"

    But i want the out put like this
    [238.59435545 229.23386034 205.94674433] 29.34%
    [213.67154468 204.84374578 180.77144429] 21.07%
    [198.76836914 110.87256368 46.76773957] 7.76%
    [39.94140346 42.37245936 36.42510903] 7.68%
    [216.17736047 190.52489076 84.93423309] 7.36%
    [ 83.247557 108.82634188 70.66370203] 7.15%
    [82.05183941 60.05586475 55.07991179] 5.87%
    [218.7735931 132.99684942 105.99257623] 5.62%
    [ 41.73549837 87.24996989 139.9000843 ] 5.07%
    [132.72742222 139.51450372 113.63158587] 3.09%

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

      Hi,

      Do you mean the styling or the sorting ?

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

      S 1 Reply Last reply
      0
      • SGaistS SGaist

        Hi,

        Do you mean the styling or the sorting ?

        S Offline
        S Offline
        swansorter
        wrote on last edited by
        #3

        @SGaist I want list dominat colors based on histogram cluster

        M 1 Reply Last reply
        0
        • S swansorter

          @SGaist I want list dominat colors based on histogram cluster

          M Offline
          M Offline
          mvuori
          wrote on last edited by
          #4

          As you want to figure out the percentages, your OpenCV topic has nothing to do with Qt (or mobile or embedded systems).

          S 1 Reply Last reply
          0
          • M mvuori

            As you want to figure out the percentages, your OpenCV topic has nothing to do with Qt (or mobile or embedded systems).

            S Offline
            S Offline
            swansorter
            wrote on last edited by
            #5

            @mvuori i know i get the output it will be helpful for me

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

              Then you should check the OpenCV forum

              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

              • Login

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