Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent)
- {
- QWidget *th=new QWidget(this);
- this->setCentralWidget(th);
- wgt=new QPushButton("load",this);
- QVBoxLayout *lay=new QVBoxLayout(th);
- lay->addWidget(wgt);
- connect(wgt,SIGNAL(clicked()),this,SLOT(on_open_clicked()));
- start=new QPushButton("start",this);
- lay->addWidget(start);
- connect(start,SIGNAL(clicked()),this,SLOT(on_start_clicked()));
- reload= new QPushButton("reload",this);
- reload->hide();
- connect (reload, SIGNAL(clicked()),this,SLOT(on_reload_clicked()));
- }
- MainWindow::~MainWindow()
- {
- }
- void MainWindow::on_open_clicked()
- {
- S = QFileDialog::getOpenFileName(this, QString::fromLocal8Bit("open"),"/home/bonapart/Dmitry/Image", "Jpg File (*.jpg)");
- }
- void MainWindow::on_start_clicked()
- {
- ImgREc(S);
- }
- void MainWindow::ImgREc (QString file)
- {
- QRgb temp;
- QImage image(file);
- QRgb hImage[image.width()][image.height()];
- newImage=new QImage(image.width(),image.height(),QImage::Format_RGB32);
- QPainter ps(newImage);
- int red=228;
- int green=167;
- int blue=149;
- int red2=190;
- int green2=125;
- int blue2=103;
- int meanCb=((-0.169)*red)-(0.332*green)+(0.500*blue);
- int meanCr=(0.500*red)-(0.419*green)-(0.81*blue);
- int meanCb2=((-0.169)*red2)-(0.332*green2)+(0.500*blue2);
- int meanCr2=(0.500*red2)-(0.419*green2)-(0.81*blue2);
- int stdCb= (-9);
- int stdCr= 13;
- int factor=1;
- int min_Cb=meanCb-stdCb*factor;
- int max_Cb=meanCb+stdCb*factor;
- int min_Cr=meanCr-stdCr*factor;
- int max_Cr=meanCr+stdCr*factor;
- int min_Cb2=meanCb2-stdCb*factor;
- int max_Cb2=meanCb2+stdCb*factor;
- int min_Cr2=meanCr2-stdCr*factor;
- int max_Cr2=meanCr2+stdCr*factor;
- //int min_Y=meanY-stdY*factor*2;
- for (int i=0;i<image.width();i++)
- for (int j=0;j<image.height();j++)
- {
- temp=image.pixel(i,j);
- QRgb r=qRed(temp);
- QRgb g=qGreen(temp);
- QRgb b=qBlue(temp);
- QRgb r2=qRed(temp);
- QRgb g2=qGreen(temp);
- QRgb b2=qBlue(temp);
- int Y=(0.299*r)+(0.587*g)+(0.114*b);
- int Cb=((-0.169)*r)-(0.332*g)+(0.500*b);
- int Cr=(0.500*r)-(0.419*g)-(0.81*b);
- if ((Cr>=min_Cr) && (Cr<=max_Cr))
- if ((Cb<=min_Cb) && (Cb>=max_Cb))r=255,g=255,b=255;
- else { r=0,g=0,b=0;}
- else { r=0,g=0,b=0;}
- if ((Cr>=min_Cr2) && (Cr<=max_Cr2))
- if ((Cb<=min_Cb2) && (Cb>=max_Cb2))r2=255,g2=255,b2=255;
- else { r2=0,g2=0,b2=0;}
- else { r2=0,g2=0,b2=0;}
- if ((r==0)&&(g==0)&&(b==0))
- if ((r2==255)&&(g2==255)&&(b2==255)) r=255,g=255,b=255;
- QRgb temp2=qRgb(r,g,b);
- hImage[i][j]=temp2;
- }
- ps.drawImage(0, 0, image);
- ps.setBrush ( Qt::red );
- for (int i=0;i<image.width();i++)
- for (int j=0;j<image.height();j++)
- {
- if (hImage[i][j]== qRgb(255,255,255 ))
- ps.drawPoint (i,j);
- }
- wgt->hide();
- start->hide();
- reload->show();
- this->resize(newImage->width(),newImage->height());
- }
- void MainWindow::on_reload_clicked()
- {
- this->resize(200,300);
- wgt->show();
- start->show();
- reload->hide();
- }
- void MainWindow::paintEvent(QPaintEvent *)
- {
- if (wgt->isVisible())return;
- QPainter p(this);
- ;
- p.drawImage(QPoint(0,0),newImage->scaled(this->width(),this->height()));
- }
Add Comment
Please, Sign In to add comment