📄 segment.cpp
字号:
#include "segment.h"
#include "image.h"
QWizardPage *segment::createIntroPage()
{
QWizardPage *page = new QWizardPage;
page->setTitle(qApp->tr("Introduction"));
page->setSubTitle(qApp->tr("<br>cette application vous parmet de s間menter cette image ... "));
QLabel *label1=new QLabel();
label1->setPixmap(*pixmap);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(label1);
page->setLayout(layout);
return page;
}
QWizardPage *segment::createinfoPage()
{
QWizardPage *page = new QWizardPage;
page->setTitle(qApp->tr("Pr閠raitement "));
page->setSubTitle(qApp->tr("<br> SVP,introduite les filtres a appliquer ."));
median=new QCheckBox("le filtre M閐ian");
median->setChecked(true);
QVBoxLayout *lay_med=new QVBoxLayout;
lay_med->addWidget(median);
QGroupBox *Median=new QGroupBox();
Median->setLayout(lay_med);
gaussian=new QCheckBox("le filtre Gaussien");
gaussian->setChecked(true);
QVBoxLayout *lay_gau=new QVBoxLayout;
lay_gau->addWidget(gaussian);
QGroupBox *Gaussien=new QGroupBox();
Gaussien->setLayout(lay_gau);
passehaut=new QCheckBox("le filtre PasseHaut");
passehaut->setChecked(true);
QVBoxLayout *lay_pas=new QVBoxLayout;
lay_pas->addWidget(passehaut);
QGroupBox *Passehaut=new QGroupBox();
Passehaut->setLayout(lay_pas);
QFormLayout *layout = new QFormLayout;
layout->addWidget(Median);
layout->addWidget(Gaussien);
layout->addWidget(Passehaut);
label=new QLabel;
label->setPixmap(*pixmap);
QHBoxLayout *layouth=new QHBoxLayout;
layouth->addWidget(label);
layouth->addLayout(layout);
page->setLayout(layouth);
connect(button(NextButton), SIGNAL(clicked() ), this, SLOT(Contour()));
return page;
}
QWizardPage *segment::createcontourPage()
{
QWizardPage *page = new QWizardPage;
page->setTitle(qApp->tr("Contour "));
page->setSubTitle(qApp->tr("<br> SVP, chosi le centre de votre cercle, le rayon et la couleur de conteur"));
image=new QImage(QSize(128,128),QImage::Format_RGB32);
image->fill(qRgb(255,0,0));
color=new QPushButton(QIcon(QPixmap().fromImage(*image)),qApp->tr("la color de contour"));
QObject::connect(color,SIGNAL(clicked()),this,SLOT(changeColor()));
painter=new paint(pixmap->width(),pixmap->height(),"tmp3.png",*coleur);
spinbox1=new QSpinBox();
spinbox1->setStatusTip(tr("la longeur de rayon de cercle"));
spinbox1->setMinimum(5);
spinbox1->setMaximum(300);
spinbox1->setValue(20);
QFormLayout *layout = new QFormLayout;
layout->addWidget(color);
layout->addWidget(spinbox1);
QLabel *label=new QLabel;
label->setPixmap(*pixmap);
QHBoxLayout *layouth=new QHBoxLayout;
layouth->addWidget(painter);
layouth->addLayout(layout);
page->setLayout(layouth);
connect(button(NextButton), SIGNAL(clicked() ), this, SLOT(Contour()));
return page;
}
QWizardPage *segment::createConclusionPage()
{
QWizardPage *page = new QWizardPage;
page->setTitle(qApp->tr("Confirmation"));
page->setSubTitle(qApp->tr("vous avez choisi de s間menter l'image suivante <br>avec la courbe choisi dans cette image ... "));
label1=new QLabel();
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(label1);
page->setLayout(layout);
connect(button(NextButton), SIGNAL(clicked() ), this, SLOT(Contour()));
return page;
}
void segment::changeColor()
{
*coleur=QColorDialog::getColor(Qt::red,this);
image->fill(qRgb(coleur->red(),coleur->green(),coleur->blue()));
painter->setPenColor(*coleur);
color->setIcon(QPixmap().fromImage(*image));
}
int valeur_max(int x,int y,int w,int h)
{
int f,l;
if(x<w-x) f=x;
else f=w-x;
if(y<h-y) l=y;
else l=h-y;
if(f>l) return f;
else return l;
}
void segment::Contour()
{
if(currentId()==2)
{
QImage *imag=new QImage(pixmap->toImage());
if(median->isChecked()) RImage::mediansans(imag);
if(gaussian->isChecked()) RImage::gaussiensans(imag);
if(passehaut->isChecked()) RImage::passehaut(imag);
imag->save("tmp.png");
painter->openImage("tmp.png");
}
else if(currentId()==3)
{
int x,y;
painter->saveImage("tmp2.png");
QImage *imag=new QImage("tmp2.png");
if(!RImage::recuperxy(imag,x,y,*coleur))
{
QMessageBox::critical(this,tr("impossible"),tr("une courbe fermer SVP ! ! !"));
back();
painter->openImage("tmp.png");
}
else
{
RImage::courbe_initial(imag,x,y,spinbox1->value(),*coleur);
const QImage inter(*imag);
label1->setPixmap(pixmap->fromImage(inter));
}
}
}
segment::segment(QPixmap filename, QWidget *parent):QWizard(parent)
{
//setOption(HaveHelpButton, true);
p=parent;
pixmap=new QPixmap(filename);
pixmap->save("tmp3.png");
coleur=new QColor(255,0,0);
addPage(createIntroPage());
addPage(createinfoPage());
addPage(createcontourPage());
addPage(createConclusionPage());
setWindowTitle(tr("Segmenter l'image"));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -