Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[visual 2008 c++] ujęcie obrazu w tablicy

Memento 03 Cze 2010 22:09 1242 4
  • #1 03 Cze 2010 22:09
    Memento
    Poziom 9  

    #EDIT
    Jako, że nie uzyskałem żadnych informacji spytam o inną rzecz.
    Jak ująć obraz w tablicy dwuwymiarowej w C++? Obraz jest biało-czarny.
    #EDIT2
    Z czarno-białego obrazka chcę uzyskać tablicę np. o wartościach 1 dla białego obszaru i 0 dla czarnego.

    0 4
  • #2 04 Cze 2010 21:05
    Eagle
    Poziom 23  

    Wróżę że obrazek masz w BMP więc proponuję zacząć od :
    BMP file format


    Cytat:
    Jak ująć obraz w tablicy dwuwymiarowej w C++?


    Ująć należy tak: zdefiniować tablicę tak aby zmieścił się obrazek, parametry odczytane z nagłówka BMP a następnie przetwarzać dalsze dane wpisać do przygotowanej tablicy.

    0
  • #3 04 Cze 2010 22:42
    Memento
    Poziom 9  

    Bardziej zależy mi na informacji dotyczącej kodu:

    Code:
    znak=getc(fp);
    
    if(znak=='*') //Warunek #1
    neuron[x][y]=1;
    else if(znak=' ') //Warunek #2
    neuron[x][y]=-1;
    else if(znak=='\n')
    break;
    else if(znak==EOF)
    return 1;

    Ten kod działa w przypadku .txt.
    W jaki sposób wczytać obrazek/jakie powinny być warunki(1,2) aby neurony działały prawidłowo? Jest to mi potrzebne do sieci neuronowej.

    0
  • #4 04 Cze 2010 22:57
    Eagle
    Poziom 23  

    Zlituj się i daj sobie pomóc pisząc jaki masz format tego obrazka, chyba ze sądzisz że wszystkie obrazki
    są zapisywane w jednym formacie. Nic nie piszesz o problemie czy masz uchwyt do bit-mapy w pamięci czy w pliku.
    W załączonym fragmencie widać, iż w pliku txt mieś obrazek z "*" i spacjami, a teraz masz obrazek czarno biały.
    Wiec znając jego format dostaniesz info na temat białych i czarnych punktów, które należy wpisać do tablicy.

    0
  • #5 05 Cze 2010 10:32
    Memento
    Poziom 9  

    Tak - obrazek jest w formacie .bmp

    Code:
    #include <stdio.h>
    
    #include <stdafx.h>
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    #define Xsize 10
    #define Ysize 10
    #define Ilosc 10*10
     const int dimx = 640;
     const int dimy = 480;
     unsigned char bitmapa [dimx][dimy][3];
     unsigned char imageproc [dimx][dimy][3];
    char neuron[Xsize][Ysize];char nazwa_pliku[108];
    char synaps[Xsize][Ysize][Xsize][Ysize];
    int i,j;
    bool Wczytaj(void)
    {
       unsigned char x,y;
       char znak;
       FILE *fp;
    if(!(fp=fopen(nazwa_pliku, "r")))
       return 0;
    static unsigned char color[3];fread(color,1,3,fp);bitmapa[j][i][0]=color[0]; /* red */
       bitmapa[j][i][1]=color[1]; /* green */
       bitmapa[j][i][2]=color[2]; /* blue */
    for(y=0;y<Ysize;y++)
       for(x=0;x<Xsize;x++)
       neuron[x][y]=-1;
    for(y=0;y<Ysize;y++)
       for(x=0;x<Xsize;x++)
       {
          
       
       
    znak=getc(fp);
    if(bitmapa[j][i][0]==0 && bitmapa[j][i][1]==0 && bitmapa[j][i][2]==0)
    neuron[x][y]=1;
    else if(bitmapa[j][i][0]==255 && bitmapa[j][i][1]==255 && bitmapa[j][i][2]==255)
    neuron[x][y]=-1;
    else if(znak=='\n')
    break;
    else if(znak==EOF)
    return 1;

    }

    Oto fragment kodu odpowiedzialny za odczyt.

    0