Gå til innhold

[Løst] jpeg til 2d gråskala array?


Anbefalte innlegg

Jeg lurer på om det er svært vanskelig å få til det jeg beskriver i emnetittelen. Vil ha en:

int bilde[640][480];

Med verdier fra 0 til 255. Fra et bilde med VGA oppløsning.

Prøvde meg litt med opencv, men deres instruksjoner var mangelfulle/utdaterte.

 

På forhånd takk.

 

EDIT: Kan nevne at jeg bruker code::blocks i windows 7 64 bit og skriver c++ kode.

Endret av O:M:A
Lenke til kommentar
Videoannonse
Annonse

1) Sett deg inn i JPEG sin filformat

2) Lær deg å implementere compression algoritmen JPEG filene bruker (de du vil jobbe med)

3) Sleng sammen til en klasse / framework

4) Lag interface og så programmet du trenger

 

Ja, det er en litt lengre vei, men gud man lærer mye av det :p Gjorde det selv med importering og triksing med BMP filer. Skal sies at bitmap er mye enklere enn jpeg =)

Lenke til kommentar

Takk for innspill! Å gjøre RGB til gråskala skal ikke være noe problem. Det som jeg ikke vet hvordan skal gjøres er å lese jpeg fra disk til en array (gjerne 3 dimensjoner som jeg kan konvertere til 2d gråskala). Jeg er nettopp ferdig med c++ fag på universitet. Så jeg har kun erfaring med å kode til konsoll med code::blocks i windows.

 

Derfor trenger jeg å få det lastet til gråskala/farge array, slik at jeg kan jobbe med det. Men google er ikke til hjelp i det hele tatt. Skulle tro det var andre i min situasjon der ute :S

Endret av O:M:A
Lenke til kommentar

JPEG bilder er (enkelt sett da) 2 deler. header, bilde data. Man må vite hvordan denne dataen er sortert, for å kunne lese den ut på riktig måte.

 

Man finner det ganske mye info både om filformatets struktur, og også om kompresjonen som brukes i JPEG her: http://en.wikipedia.org/wiki/JPEG.

 

Når det gjelder å lese fra bildet så er det jo bare å bruke ifstream, og lese inn til en til en char* (alloker ettersom hvor stor fila er). Det trenger ikke å ligge i en array, for det er jo bare en fil med innhold. Så stusser litt over valget av å legge inn i en array. For etter du har trukket ut data om f.eks hvor bred og høy bildet er, samt har fjerne kompresjonen fra bildedataen, så er det bare litt for-løkke bruk for å manipulere / iterrere gjennom innholdet.

 

Bare ut av nyskjerrighet, hvilket universitet, og hvor mange studiepoeng var emnet? har der vært igjennom alt fra minneallokering, pekere, arv, alt det der?

Endret av Valkyrex
Lenke til kommentar

Ser at det er lite vits i å legge det i en 2d array ja. Kan likegodt legge det i en rekke med unsigned char.

 

NTNU, 7.5 studiepoeng, Prosedyre og objektorientert programmering (kun c++).

Ja, har vært gjennom pekere, minnehåndtering osvosv. Men jeg må inntrømme at jeg ikke er 100% stødig på subklasser, arv og minnehåndtering.

 

EDIT: Håper jeg sto på eksamen da

 

EDIT2: Finnes det virkelig ingen ferdige dekodere som returnerer noe bilde data (som feks oppløsning) og dekodet bildedata?

Endret av O:M:A
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...