📄 form1.ui.h~
字号:
/****************************************************************************** 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 + -