|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 977
|
[C] Elaborazione immagini .pgm
Ciao a tutti,
mi trovo a dover realizzare un programma in C, che consente id leggere un file formato PGM in ASCII, memorizzandolo in un array 2D, e da qui, calcolare il negativo dell'immagine (l'immagine è in B/N), e, assegnate le coordinate di un pixel 'q' e una soglia 's', calcolare la componente connessa dell'immagine a cui appartiene 'q', avendo fissato l’insieme: V = {p(i, j) : p(i, j) - q < s} come insieme dei valori di grigio che consentono di definire la 4-adiacenza, e memorizzare il risultato in una immagine digitale binaria in cui i pixel di C hanno valore 1 ed i rimanenti hanno valore 0. Sinceramente, non so molto bene da dove iniziare... e vorrei che mi deste dei consigli per realizzare questo programma! Allego l'immagine .pgm ciao a tutti
__________________
Workstation: CPU AMD Ryzen 5600G @ 4400 MHz | RAM Corsair DDR4 32GB @ 3.2GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 2x Caviar Green 10TB | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 6800 XT Midnight Black | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | Mic Oktava MK 012 Black | Display LG OLED 48C1 @ 2160p 120Hz VRR FreeSync |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 977
|
emergo questo topic, perchè ho ritrovato questo problema facendo pulizia tra le mie cose! Cavolo... sapete che non ci sono mai riuscito!?
![]() ![]()
__________________
Workstation: CPU AMD Ryzen 5600G @ 4400 MHz | RAM Corsair DDR4 32GB @ 3.2GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 2x Caviar Green 10TB | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 6800 XT Midnight Black | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | Mic Oktava MK 012 Black | Display LG OLED 48C1 @ 2160p 120Hz VRR FreeSync |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2004
Messaggi: 130
|
Ecco un po' di codice: e' C++ perche' era piu' comodo per me, e mi sono fermato al negativo dell'immagine per lasciarti un po' di spazio.
![]() Codice:
#include <fstream> #include <vector> #include <string> using namespace std; class PGM { int w, h, max, size; vector<int> data; public: PGM(const char *filename); void salva(const char *filename); void negativo(void) { for (int i = 0; i < size; ++i) data[i] = max - data[i]; } }; PGM::PGM(const char *filename) { ifstream in(filename); string sign; in >> sign >> w >> h >> max; size = w*h; data.reserve(size); for (int i = 0; i < size; ++i) in >> data[i]; } void PGM::salva(const char *filename) { ofstream out(filename); out << "P2" << endl; out << w << " " << h << endl; out << max << endl; for (int i = 0; i < h; ++i) { for (int j = 0; j < w; ++j) out << data[i * w + j] << " "; out << endl; } } int main(void) { PGM pgm("Rice.pgm"); pgm.negativo(); pgm.salva("Negativo.pgm"); } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 977
|
si, ho visto.. grazie tante!
![]() mo me lo converto in C... ![]()
__________________
Workstation: CPU AMD Ryzen 5600G @ 4400 MHz | RAM Corsair DDR4 32GB @ 3.2GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 2x Caviar Green 10TB | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 6800 XT Midnight Black | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | Mic Oktava MK 012 Black | Display LG OLED 48C1 @ 2160p 120Hz VRR FreeSync |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:37.