⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.ui.h~

📁 qt qimage 显示图象类的使用
💻 H~
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** ui.h extension file, included from the uic-generated form implementation.**** If you wish to add, delete or rename functions or slots use** Qt Designer which will update this file, preserving your code. Create an** init() function in place of a constructor, and a destroy() function in** place of a destructor.*****************************************************************************/#include <qimage.h>#include <qpainter.h>#include <qlineedit.h>#include <qpainter.h>#include <qpoint.h>#include <qcolor.h>#include <qstring.h>#include <iostream.h>#include <qfiledialog.h>#include <qdatetime.h>#include <qrect.h>#include <qcolor.h>#include <qcombobox.h>#include <iostream.h>#include <math.h>#include <qpixmap.h>#include <qmessagebox.h>//#define ABS(a) (a) >= 0? (a):-(a)QString filedirA, filedirB, filepathA, filepathB, filedirSave;bool openflagA=FALSE,openflagB=FALSE, openSaveflag = FALSE;int min(int r, int g, int b){    //if((r == g) && (r == b)) {return -1;}    if((r <= g) && (r <= b)) {return r;}    else if((g <= r) && (g <= b)) {return g;}    else return b;};bool Savefile(QRadioButton *rb,QString filename,QLineEdit *le,QImage img){    if(rb->isChecked())    {        if((!openSaveflag) && (le->text() == ""))        {                        QMessageBox::warning(0,"File save failed","Please choose a Directory to save your pictures !");            return FALSE;        }        filedirSave = le->text();        QString s;        s.sprintf("/");        s = s + filename;        s = filedirSave + s;        if(img.save(s,"JPEG") == FALSE) return FALSE;        return TRUE;    }    //else return FALSE;};QImage filter(QImage image){    QRgb rgb;    int r,g,b;    uint *p;    QImage imagetemp = image;    int x = 0, y = 0;    for(y = 1;y < image.height() - 1;y++)    {        for(x = 1;x < image.width()-1;x++)        {            rgb = image.pixel(x,y);            r = (int)((float)( qRed(image.pixel(x-1,y-1)) + qRed(image.pixel(x,y-1)) + qRed(image.pixel(x+1,y+1)) + qRed(image.pixel(x-1,y)) + qRed(image.pixel(x,y)) + qRed(image.pixel(x+1,y)) + qRed(image.pixel(x-1,y+1)) + qRed(image.pixel(x,y+1)) + qRed(image.pixel(x+1,y+1)) ) / 9.0 );            g = (int)((float)( qGreen(image.pixel(x-1,y-1)) + qGreen(image.pixel(x,y-1)) + qGreen(image.pixel(x+1,y+1)) + qGreen(image.pixel(x-1,y)) + qGreen(image.pixel(x,y)) + qGreen(image.pixel(x+1,y)) + qGreen(image.pixel(x-1,y+1)) + qGreen(image.pixel(x,y+1)) + qGreen(image.pixel(x+1,y+1)) ) / 9.0 );            b = (int)((float)( qBlue(image.pixel(x-1,y-1)) + qBlue(image.pixel(x,y-1)) + qBlue(image.pixel(x+1,y+1)) + qBlue(image.pixel(x-1,y)) + qBlue(image.pixel(x,y)) + qBlue(image.pixel(x+1,y)) + qBlue(image.pixel(x-1,y+1)) + qBlue(image.pixel(x,y+1)) + qBlue(image.pixel(x+1,y+1)) ) / 9.0 );            p = (uint *)imagetemp.scanLine(y) + x;            *p = qRgb(r,g,b);         }    }    return imagetemp;};QImage threshold(QImage image,int limit){    QRgb rgb;    int r,g,b;    uint *p;    QImage imagetemp = image;    int x=0,y=0;    for(y=0;y<image.height();y++)    {        for(x=0;x<image.width();x++)        {            rgb = image.pixel(x,y);            r = (qRed(rgb) > limit)? 255:0;            g = (qGreen(rgb) > limit)? 255:0;            b = (qBlue(rgb) > limit)? 255:0;            p = (uint *)imagetemp.scanLine(y) + x;            *p = qRgb(r,g,b);        }    }    return imagetemp;};QImage calH(QImage img){    int x = 0, y = 0;    int r, g, b;    int h, l;    QRgb rgb;        QImage imagetemp = img;    uint *p;    for(y = 0; y < img.height(); y++)	    {		for(x = 0; x < img.width(); x++)		{		     rgb = img.pixel(x,y);		     r = qRed(rgb);		     g = qGreen(rgb);		     b = qBlue(rgb);		     l = (int)((float)(r + g + b) / 3.0);             if ((r == g) && (r == b)) {                 h = 170;//  2/3 max(255)                 p = (uint *)imagetemp.scanLine(y) + x;                 *p = qRgb(h,h,h);              }		     else if(min(r,g,b) == r) {			 h = (int)((((float)(b - r) / (float)(l - r) / 3.0) + 1.0) / 3.0 * 255.0);		     }		     else if(min(r,g,b) == g) {			 h = (int)((((float)(r - g) / (float)(l - g) / 3.0) + 2.0)/ 3.0 * 255.0);		     }		     else {h = (int)((((float)(g - b) / (float)(l - b) / 3.0) + 1.0) / 3.0 * 255.0);}		     p = (uint *)imagetemp.scanLine(y) + x;		     *p = qRgb(h,h,h);   		}	    }    return imagetemp;};QImage calHint(QImage img){    int x = 0, y = 0;    int r, g, b;    int h;    QRgb rgb;        QImage imagetemp = img;    uint *p;    for(y = 0; y < img.height(); y++)	    {		for(x = 0; x < img.width(); x++)		{		     rgb = img.pixel(x,y);		     r = qRed(rgb);		     g = qGreen(rgb);		     b = qBlue(rgb);		                  if ((r == g) && (r == b)) {                 h = 170;//  2/3 max(255)                 p = (uint *)imagetemp.scanLine(y) + x;                 *p = qRgb(h,h,h);              }		     else if(min(r,g,b) == r) {			 h = 85*(g+2*b-3*r)/(g+b-2*r);		     }		     else if(min(r,g,b) == g) {			 h = 85*(3*r+2*b-5*g)/(r+b-2*g);		     }		     else {h = 85*(r+2*g-3*b)/(r+g-2*b);}		     p = (uint *)imagetemp.scanLine(y) + x;		     *p = qRgb(h,h,h);   		}	    }    return imagetemp;};QImage calL(QImage img){    int x = 0, y = 0;    int r, g, b;    int l;    QRgb rgb;        QImage imagetemp = img;    uint *p;    for(y = 0; y < img.height(); y++)	    {		for(x = 0; x < img.width(); x++)		{		     rgb = img.pixel(x,y);		     r = qRed(rgb);		     g = qGreen(rgb);		     b = qBlue(rgb);		     l = (int)((float)(r + g + b) / 3.0);		     		     p = (uint *)imagetemp.scanLine(y) + x;		     *p = qRgb(l,l,l);    		}	    }    return imagetemp;};QImage calS(QImage img){    int x = 0, y = 0;    int r, g, b;    int l,s;    QRgb rgb;        QImage imagetemp = img;    uint *p;    for(y = 0; y < img.height(); y++)	    {		for(x = 0; x < img.width(); x++)		{		     rgb = img.pixel(x,y);		     r = qRed(rgb);		     g = qGreen(rgb);		     b = qBlue(rgb);		     l = (int)((float)(r + g + b) / 3.0);		     if(min(r,g,b) == r) {			 s = (int)(((float)r / (float)l) * 255.0);		     }		     else if(min(r,g,b) == g) {			 s = (int)(((float)g / (float)l) * 255.0);		     }		     else if(min(r,g,b) == b) {			 s = (int)(((float)b / (float)l) * 255.0);		     }		     else {s = (int)(((float)r / (float)l) * 255.0);}		     		     p = (uint *)imagetemp.scanLine(y) + x;		     *p = qRgb(s,s,s);    		}	    }    return imagetemp;}QImage GetNperM(QImage img, int n){    }void Form1::init(){    comboBoxAB->insertItem("Image A",0);    comboBoxAB->insertItem("Image B",1);        comboBoxfomat->insertItem("JPEG",0);    comboBoxfomat->insertItem("BMP",1);    comboBoxfomat->insertItem("PNG",2);    comboBoxfomat->insertItem("XPM",3);        comboBoxRGBAB->insertItem("Image A", 0);    comboBoxRGBAB->insertItem("Image B", 1);        comboBoxRGB->insertItem("R", 0);    comboBoxRGB->insertItem("G", 1);    comboBoxRGB->insertItem("B", 2);        comboBoxHLSAB->insertItem("Image A",0);    comboBoxHLSAB->insertItem("Image B",1);        comboBoxHLS->insertItem("H",0);    comboBoxHLS->insertItem("L",1);    comboBoxHLS->insertItem("S",2);      comboBox3x3AB->insertItem("Image A",0);    comboBox3x3AB->insertItem("Image B",1);    comboBoxThreshold->insertItem("Image A",0);    comboBoxThreshold->insertItem("Image B",1);    comboBoxGetAB->insertItem("Image A",0);    comboBoxGetAB->insertItem("Image B",1);   // QPixmap pix("images/back.png");   // this->setPaletteBackgroundPixmap(pix);    }void Form1::different(){   if((!openflagA) && (lineEditA->text() == "")) {lineEdit1->setText("WARNING: Please select image A"); return;}    if((!openflagB) && (lineEditB->text() == "")) {lineEdit1->setText("WARNING: Please select image B"); return;}        filedirA = lineEditA->text();    filedirB = lineEditB->text();        QImage imageA(filedirA);    QImage imageB(filedirB);    QImage imagetemp = imageB;    QPainter p( this );        p.drawImage(QRect(QPoint(70,110),QPoint(198,206)),imageA);    p.drawImage(QRect(QPoint(280,110),QPoint(408,206)),imageB);    //p.drawImage(QPoint(20,190), imageA);   // p.drawImage(QPoint(300,190), imageB);        int imgwidth, imgheight, difcount(0);        int x,y;    uint *q;  //  int i=0;    QString str;        QRgb rgbA, rgbB;    int rA,gA,bA,rB,gB,bB;        int difvalue = spinBox1->value();            imgwidth = imageA.width();    imgheight = imageA.height();        if(imageA != imageB)    {	if((imageA.size() != imageB.size())) 	{	    lineEdit1->setText("WARNING: Their SIZE are NOT same!!!");	   return;	}		else 	{	    //lineEdit1->setText("processing...");	   	    for(y = 0; y < imgheight; y++)	    {		for(x = 0; x < imgwidth; x++)		{		    rgbA = imageA.pixel(x,y);		    rgbB = imageB.pixel(x,y);		    		    rA = qRed(rgbA);		    gA = qGreen(rgbA);		    bA = qBlue(rgbA);		    		    rB = qRed(rgbB);		    gB = qGreen(rgbB);		    bB = qBlue(rgbB);		   	    		    if(!(((abs(rA - rB) <= difvalue) && (abs(gA - gB) <= difvalue) &&  (abs(bA - bB) <= difvalue)) ))             {                difcount++;                            }            else {                q = (uint *)imagetemp.scanLine(y) + x;                *q = qRgb(255,255,255);            }											    }			    }	}		str.sprintf("Different pixels: %d ! Ratio: %f percent !", difcount, (float)difcount/(float)(imgwidth * imgheight) * 100);	lineEdit1->setText(str);	p.drawImage(QRect(QPoint(320,290),QPoint(448,396)),imagetemp);	Savefile(radioButtonCom,"DifferentImage.jpg",lineEditSave,imagetemp);    }        else lineEdit1->setText("SAME");    }void Form1::compare(){    if((!openflagA) && (lineEditA->text() == "")) {lineEdit1->setText("WARNING: Please select image A"); return;}    if((!openflagB) && (lineEditB->text() == "")) {lineEdit1->setText("WARNING: Please select image B"); return;}        filedirA = lineEditA->text();    filedirB = lineEditB->text();        QImage imageA(filedirA);    QImage imageB(filedirB);    QPainter p( this );             p.drawImage(QRect(QPoint(70,110),QPoint(198,206)),imageA);    p.drawImage(QRect(QPoint(280,110),QPoint(408,206)),imageB);    //p.drawImage(QPoint(20,190), imageA);    //p.drawImage(QPoint(300,190), imageB);        lineEdit1->setText((imageA == imageB)? "The two images are SAME" : "The two images are NOT same");    if(imageA != imageB)    {    QTime time = QTime::currentTime();    QDate date = QDate::currentDate();    QString s;    s.sprintf("%4d_%2d_%2d-%2d:%2d:%2d.jpg",date.year(),date.month(),date.day(),time.hour(),time.minute(),time.second());    lineEdit1->setText("They are NOT same !");    if (!Savefile(radioButtonCom,s,lineEditSave,imageB)) {        lineEdit1->setText("NOT same !");         return;    }    else lineEdit1->setText("NOT same, Image B saved success!");    return;    }    }void Form1::openA(){    QFileDialog A("/arca/wsy/testpicture/");    A.setFilter( "Images (*.png *.xpm *.jpg *.bmp *.JPG)" );    //A.setViewMode( QFileDialog::Detail );    if ( A.exec() == QDialog::Accepted )    {	filedirA = A.selectedFile();	filepathA = A.dirPath();	openflagA = TRUE;	//imageA->setText(filedirA);	lineEditA->setText(filedirA);	    }    if(openflagA == TRUE) {	QImage imageA(filedirA);	QPainter p( this );	p.drawImage(QRect(QPoint(70,110),QPoint(198,206)),imageA);    }}void Form1::openB(){    QFileDialog B("/arca/wsy/testpicture/");    B.setFilter( "Images (*.png *.xpm *.jpg *.bmp *.JPG)" );    //B.setViewMode( QFileDialog::Detail );    if ( B.exec() == QDialog::Accepted )    {	//filenameB = B.selectedFile();	filedirB = B.selectedFile();	filepathB = B.dirPath();	openflagB = TRUE;	//imageB->setText(filedirB);	lineEditB->setText(filedirB);	    }    if(openflagB == TRUE) {    QImage imageB(filedirB);    QPainter p( this );     p.drawImage(QRect(QPoint(280,140),QPoint(408,206)),imageB);    }}void Form1::calcolorA(){    if((!openflagA) && (lineEditA->text() == "")) {lineEdit1->setText("WARNING: Please select image A"); return;}    filedirA = lineEditA->text();    QImage imageA(filedirA);    QImage imagetemp = imageA;        QRgb rgb;    int r,g,b;        int x,y;    uint *p;        //set (x,y) color to (255,255,0)    for (y=0; y<imageA.height();y++)    {	for(x=0;x<imageA.width();x++)	{	    rgb = imageA.pixel(x,y);	    	    //r = qRed(rgb);	    //g = qGreen(rgb);	   // b = qBlue(rgb);	    	    r = (int)((float)qRed(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	    g = (int)((float)qGreen(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	    b = (int)((float)qBlue(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	   // cout<<"At ("<<x<<","<<y<<") :"<<"r="<<r<<"  g="<<g<<"  b="<<b<<endl;	    p = (uint *)imagetemp.scanLine(y) + x;	    *p = qRgb(r,g,b);	    	}    }    QPainter q( this );     q.drawImage(QRect(QPoint(530,320),QPoint(658,416)),imagetemp);    if (!Savefile(radioButtonCal,"calcolorA.jpg",lineEditSave,imagetemp)) return;    }void Form1::calcolorB(){    if((!openflagB) && (lineEditB->text() == "")) {lineEdit1->setText("WARNING: Please select image B"); return;}    filedirB = lineEditB->text();    QImage imageB(filedirB);    QImage imagetemp = imageB;        QRgb rgb;    int r,g,b;        int x,y;    uint *p;        //set (x,y) color to (255,255,0)    for (y=0; y<imageB.height();y++)    {	for(x=0;x<imageB.width();x++)	{	    rgb = imageB.pixel(x,y);	    r = (int)((float)qRed(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	    g = (int)((float)qGreen(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	    b = (int)((float)qBlue(rgb) *255.0 / (float)(qRed(rgb)+qGreen(rgb)+qBlue(rgb)));	    	    p = (uint *)imagetemp.scanLine(y) + x;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -