How to include .txt on Qt
-
wrote on 24 Dec 2016, 12:41 last edited by
Okay,
but we keep the code ?
because the <100 isn't good, you said we have to compare all the colors and see what colors match the best
-
Yes ?
Then change the 100.
Its just a value. You should examine your color and see
the value for color that you consider "The same"
Maybe its need to be 80 or 110. Depends on how close
the color must be for you to think its the same. -
wrote on 24 Dec 2016, 21:50 last edited by
Yes, but correct me if i'm wrong, it could be possible that it detect many colors under 100 right ?
-
Yes, but correct me if i'm wrong, it could be possible that it detect many colors under 100 right ?
@Payx
its a value. How high or low u need it to be , depends
on your application. -
wrote on 25 Dec 2016, 17:30 last edited by
yes but i can't know exactly, thats why i put 100.
The things i want its the minimum of all the value
like a function who calcule all diffBlue+diffRed+diffGreen
and return me the minimum -
wrote on 26 Dec 2016, 23:33 last edited by
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QPixmap> #include <QImage> #include <QFileDialog> #include <QColor> #include <QPoint> #include <QSize> #include <iostream> using namespace std; QColor Couleurdominante(const QImage& image, const QPoint& topLeft, const QSize& rectSize); void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectSize, const QColor& colour); MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } 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(); pixi = QImage(pix.toImage()); ui->label_2->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) ); } void MainWindow::on_push2_clicked() { for (int i=0;i<pixi.width();i+=z){ for (int j=0;j<pixi.height();j+=z){ k=k+0.06; Remplissage(pixi,QPoint(i,j),QSize(z,z),Couleurdominante(pixi,QPoint(i,j),QSize(z,z))); } } pixa=QPixmap::fromImage(pixi); ui->label_3->setPixmap(pixa); float a = k - 0.06*z; ui->label_4->setText(QString::number(a)); } void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectangle, const QColor& colour) { int maxX = topLeft.x() + rectangle.width(); int maxY = topLeft.y() + rectangle.height(); for(int x = topLeft.x(); x < maxX; ++x) { for(int y = topLeft.y(); y < maxY; ++y) { image.setPixelColor(x, y, colour); QMapIterator<QRgb, CostInfo>i; while (i.hasNext()) { i.next(); QColor BaseColor( i.key() ); if (Costs.contains( colour.rgb() ) || IsCloseColor(BaseColor, colour) ) { CostInfo& ci = Costs[colour.rgb()]; int Cost = ci.Cost; QPixmap pix( ci.ImageName ); } } } } } QColor Couleurdominante(const QImage & image,const QPoint & topLeft, const QSize & rectangle) { int rouge = 0, vert = 0, bleue = 0; int X = topLeft.x() + rectangle.width(); int Y = topLeft.y() + rectangle.height(); for (int y = topLeft.y(); y < Y; y++) { for (int x = topLeft.x(); x < X; x++) { QRgb pixel = image.pixel(x, y); rouge += qRed(pixel); vert += qGreen(pixel); bleue += qBlue(pixel); } } int n = rectangle.width() * rectangle.height(); Q_ASSERT(n); if (n <= 0) return Qt::black; return QColor(rouge / n, vert / n, bleue / n); } QMap<QRgb, CostInfo > Costs = { { QColor(255 , 0 , 0 ).rgb(), { "://fraise.png", 10 }}, { QColor(0 , 255 , 0 ).rgb(), { "://balleverte.png", 20 }}, { QColor(0 , 0 , 255 ).rgb(), { "://ballebleue.png", 20 }}, { QColor(255 , 255 , 255 ).rgb(), { "://balleblanche.png", 20 }}, { QColor(255 , 128 , 0 ).rgb(), { "://ballepeche.png", 20 }}, { QColor(0 , 0 , 0 ).rgb(), { "://noir.png", 20 }}, { QColor(102 , 51 , 0 ).rgb(), { "://marron.png", 20 }}, { QColor(255 , 102 , 78 ).rgb(), { "://rose.png", 20 }}, { QColor(0 , 204 , 204 ).rgb(), { "://turquoise.png", 20 }}, { QColor(255 , 178 , 102 ).rgb(), { "://beige.png", 20 }}, { QColor(76 , 0 , 153 ).rgb(), { "://violet.png", 20 }}, { QColor(100 , 100 , 100 ).rgb(), { "://gris.png", 20 }}, }; bool IsCloseColor( QColor c1, QColor c2 ) { int diffRed = Math.abs(c1.red() - c2.red()); int diffGreen = Math.abs(c1.green() - c2.green()); int diffBlue = Math.abs(c1.blue() - c2.blue()); if (diffBlue+diffRed+diffGreen< 100){ / return true;. else return false; } } void MainWindow::on_verticalSlider_sliderMoved(int position) { ui->verticalSlider->setRange(1,50); z=position; }
It said that CostInfo, Costs are not declared
-
Maybe you use it above where you define it or maybe u didnt show it how CostInfo is defined.
-
wrote on 27 Dec 2016, 12:22 last edited by
I defined my QMap here :
QMap<QRgb, CostInfo > Costs = { { QColor(255 , 0 , 0 ).rgb(), { "://fraise.png", 10 }}, { QColor(0 , 255 , 0 ).rgb(), { "://balleverte.png", 20 }}, { QColor(0 , 0 , 255 ).rgb(), { "://ballebleue.png", 20 }}, { QColor(255 , 255 , 255 ).rgb(), { "://balleblanche.png", 20 }}, { QColor(255 , 128 , 0 ).rgb(), { "://ballepeche.png", 20 }}, { QColor(0 , 0 , 0 ).rgb(), { "://noir.png", 20 }}, { QColor(102 , 51 , 0 ).rgb(), { "://marron.png", 20 }}, { QColor(255 , 102 , 78 ).rgb(), { "://rose.png", 20 }}, { QColor(0 , 204 , 204 ).rgb(), { "://turquoise.png", 20 }}, { QColor(255 , 178 , 102 ).rgb(), { "://beige.png", 20 }}, { QColor(76 , 0 , 153 ).rgb(), { "://violet.png", 20 }}, { QColor(100 , 100 , 100 ).rgb(), { "://gris.png", 20 }}, };
And this is a function call no ?
QMapIterator<QRgb, CostInfo>i;
-
Hi
And where is the definition for CostInfo ? -
wrote on 28 Dec 2016, 01:54 last edited by
i do not know, i thought CostInfo is the cost near the picture so i didnt needed to defined it no ?
-
i do not know, i thought CostInfo is the cost near the picture so i didnt needed to defined it no ?
wrote on 28 Dec 2016, 02:48 last edited by@Payx
the compiler only knows the fundamental types or types defined.
so you need to define CostInfo or compiler will give you an error. -
@Payx
the compiler only knows the fundamental types or types defined.
so you need to define CostInfo or compiler will give you an error.wrote on 28 Dec 2016, 03:16 last edited by@Flotisable Thank you,
so i have to define CostInfo as an int ?
-
@Flotisable Thank you,
so i have to define CostInfo as an int ?
wrote on 28 Dec 2016, 03:46 last edited by Flotisable@Payx
in your case, one of the value you give is { "://fraise.png", 10 }, which is composed of a string and a integerit seems CostInfo should look like this
struct CostInfo { QString imageName; int cost; };
-
wrote on 28 Dec 2016, 14:33 last edited by
Okay understood how it works now.
Why it say that "Costs" is not declared, it is the name of the QMap right ?
-
Okay understood how it works now.
Why it say that "Costs" is not declared, it is the name of the QMap right ?
@Payx
Yes Costs is the QMap variable. -
wrote on 28 Dec 2016, 17:08 last edited by
How do i declare a QMap ?
i tried
QMap<QRgb, CostInfo > Costs;
-
@Payx
Yes that is how you declare an empty QMap called Costs. -
wrote on 28 Dec 2016, 18:47 last edited by
Yes but it say that CostInfo is not declared again
-
@Payx
CostInfo must be declared before you use it in QMap
Where is it?
you used to have struct CostInfo declaration. -
wrote on 28 Dec 2016, 21:00 last edited by
I put my declaration of CostInfo in my .h
59/196