/* On filtre l'image sans la redimensionner */ void Fenetre::Filtrage() { float angle; if (BBox->isChecked()) { PictModif = filtrer_grayscale(Picture); PictModif = filtrer_seuillage(PictModif,155); angle = rotation_calcul_angle(PictModif); if (angle != 0.0) PictModif = filtrer_rotation(PictModif, angle); PictModif = filtrer_median(PictModif, NBelt_listd,155); qualite_image = 1; } else { PictModif = filtrer_grayscale(Picture); PictModif = filtrer_seuillage(PictModif,200); qualite_image = 0; } Image2Apercu(&PictModif); BBut->show(); // on propose de sauvegarder BBut->resize(90, 40); BBut->move(440, 400); BBut->setText("Sauver"); connect(BBut, SIGNAL(clicked()), this, SLOT(Sauvegarde())); }
void mat_Filtrer_bien(QImage *pix, QLabel *lblCadre, int NBelt_listd,int s) { QImage ima; QPixmap * img; // QImage pix; float angle; int w,h; // img = lblCadre->pixmap(); //pix = img->convertToImage(); //*******************************************************************/ *pix = filtrer_redim(*pix); w = pix->width(); h = pix->height(); lblCadre->setGeometry(QRect(10,130,w,h )); *pix = filtrer_grayscale(*pix); *pix = filtrer_seuillage(*pix,s); angle = rotation_calcul_angle(*pix); if (angle != 0.0) ima = filtrer_rotation(*pix,angle); else ima = *pix; ima = filtrer_median(ima, NBelt_listd,s); lblCadre->setPixmap(ima); *pix = ima; }
void Fenetre::Filtrage_simple(QImage * im) // filtrage pour les tests : pas de rotation. { int s; if (qualite_image) s = 155; else s = 200; *im = filtrer_median(*im, NBelt_listd,s); // Image2Apercu(im); }
int main(int argc, char *argv[]) { if (argc == 2) { char *path = my_strdup(argv[1]); image_t *img = charger_image_pgm(path); if (!img) { fprintf(stderr, "main: Invalid image abort\n"); return 1;} image_t *new_img = rotation(img, 90); image_t *tmp = rotation(new_img, 180); detruire_image(new_img); new_img = rotation(tmp, 270); detruire_image(tmp); tmp = rotation(new_img, 90); detruire_image(new_img); new_img = tmp; if (memcmp(new_img->buff, img->buff, img->h * img->w)) { fprintf(stderr, "Error image are differents after 4 * 90 rot.\n"); } else { fprintf(stderr, "Images are equals rotation is OK!\n"); } sauver_image_pgm("replique2.pgm", new_img); char const *noyaux[11] = { "noyaux/noyau_deriv.txt", "noyaux/noyau_deriv2.txt", "noyaux/noyau_derivxy2.txt", "noyaux/noyau_derivy2.txt", "noyaux/noyau_exp.txt", "noyaux/noyau_gauss.txt", "noyaux/noyau_laplace4.txt", "noyaux/noyau_laplace8.txt", "noyaux/noyau_moy.txt", "noyaux/noyau_sobelx.txt", "noyaux/noyau_sobely.txt"}; for (size_t x = 0; x < 11; x += 1) { noyau_t *core = charger_noyau(noyaux[x]); fprintf(stderr, "%zu: core.path: %s" " | core.dim: %d\n",x, noyaux[x], core->dim); for (size_t i = 0; i < core->dim; i += 1) { for (size_t j = 0; j < core->dim; j += 1) { fprintf(stderr, "%d ", core->coeffs[j + core->dim * i]); } putchar('\n'); } image_t *img2 = convoluer(new_img, core); detruire_image(img2); detruire_noyau(core); } detruire_image(img); img = filtrer_median(new_img); detruire_image(img); detruire_image(new_img); free(path); } return (0); }
void OnMedian(GtkWidget* widget, gpointer data) { (void) widget; (void) data; pile_new_image(filtrer_median(cur_image)); }