|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 981
|
[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 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 9070 XT | 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 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz FreeSync Premium |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 981
|
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 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 9070 XT | 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 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz FreeSync Premium |
|
|
|
|
|
#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: 981
|
si, ho visto.. grazie tante!
mo me lo converto in C...
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 9070 XT | 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 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz FreeSync Premium |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:45.



















