Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Programm für Bildbearbeitung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Programm für Bildbearbeitung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Programm für Bildbearbeitung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bis jetzt haben wir immer mit einem eigenem Compiler C programmiert. Jetzt haben wir ein Beispielprogramm bekommen, das wir verstehen sollen. Das Programm sollte ein Bild einlesen und es etwas heller machen. Leider, weiß ich nicht, wie man bei Microsoft Visual C++ 2010Express ein Bild einlesen kann. Kann mir da einer weiter helfen?
08.03.2013 15:39 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nicht Visual Studio soll das Bild einlesen, sondern das Programm. Wenn du das Programm verstehen sollst, dann verstehe doch erst einmal, woher das Programm weiß, welches Bild es verarbetien soll...

Wenn es ein Parameter ist, welcher beim Programmstart übergeben wird, dann kann man das im VS in den Projekteingenschaften einstellen.

VG,

Karlito
08.03.2013 17:46 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

#include <stdio.h>

#include "writeGIF.h" /* Deklarationen für die GIF-Routinen */
#include "loadjpeg.h" /* Deklarationen für die JPEG-Routinen */

/* Name für das Testbild */
#define TestBild "MG"
#define Matrikelnummer "543210"
#define JPG_Extension ".jpg"
#define GIF_Extension ".gif"
#define TestBild_In TestBild JPG_Extension
#define TestBild_Out Matrikelnummer GIF_Extension

/* Der Typ PIXEL ist bereits in loadjpeg.h definiert! */
#ifndef PIXEL
#define PIXEL unsigned char
#endif

int main(int argc, char *argv[])
{
PIXEL **bild;

int zeilenanzahl, spaltenanzahl;
int rcode;
float gleitender_offset;
float flt_grauwert;
int i, j;
double mi, mj;




bild = load_jpg_grey_image( TestBild_In, &zeilenanzahl, &spaltenanzahl );
............
Das ist der Anfang des Programms. Mein Problem ist das ich es nicht verstehen.
z.B.
dieser Ausdruck:
#ifndef PIXEL
#define PIXEL unsigned char
#endif

Ich dachte immer, das die Zeichen zwischen #ifndef und #endif immer von Programm überlesen wird. Sowas ähnlichen, wie /*….*/

PIXEL **bild; z.B. kenn ich gar nicht, was das bedeuten soll(

bild = load_jpg_grey_image( TestBild_In, &zeilenanzahl, &spaltenanzahl );
Diese Zeile sieht für mich aus, als ob das Programm hier das Bild einliest. Aber „bild“ wird vorher nicht als eine Funktion differiert(
08.03.2013 18:18 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

das hast du leider nicht ganz richtig verstanden. Die Befehle, die mit "#" anfangen werden zwar nicht vom Compiler verarbeitet, jedoch vom so genannten Präprozessor. Der Präprozessor ist soetwas wie ein Textersetzer.

In dem Teil
code:
1:
2:
3:
#ifndef PIXEL

wird geprüft, ob der Präprozessor die "Variable" PIXEL kennt. Wenn nicht, dann wird mit

code:
1:
2:
3:
#define PIXEL unsigned char


PIXEL so festgelegt, dass in der Zukunft PIXEL immer durch "unsigned char" ersetz wird.

code:
1:
2:
3:
PIXEL **bild;

wird also zu
code:
1:
2:
3:
unsigned char **bild;


Somit kannst du auch verstehen, was es bedeutet. Es handelt sich um einen Zeiger auf ein Array von chars. Wobei jeder char wohl einem Pixel entspricht.

Alles klar?

VG,

Karlito
09.03.2013 11:55 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Programm für Bildbearbeitung