Bonjour à tous,

J'ai encore un petit problème, j'ai fait un petit programme qui lit des "images" au format RAW codées en UINT16 (c.a.d. unsigned short int), la lecture se fait au moyen de la fonction readraw.
Une fois les données lues, je veux les ranger dans un tableau de tableaux (ce que j'appelle une matrice 2D), tout en changeant sont cast, j'ai besoin pour la suite de mes calculs qu'il soit d'un type double qui autorise les valeurs signées et flottantes, c'est ce que j'essaie de faire tout à la fin de ce bout de code, mais ça ne marche pas :/ (erreur de segmentation)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <tiff.h>
#include <tiffio.h>
#include <math.h>
 
#define PATH_IR108 "/home/flaherty/Bureau/hauteur_panache/IR108.raw"
#define PATH_IR120 "/home/flaherty/Bureau/hauteur_panache/IR120.raw"
 
unsigned short int ** readraw(char *path, long nbelt);
double ** createmat2D(int nblig, int nbcol);
 
//####################### Fonction main#####################################
int main(void)
{
int i=0, j=0, k=0;
unsigned short int **tab_IR108, **tab_IR120;
double **mat_IR108, **mat_IR120, tempBTD;
int nblig=0, nbcol=0;
long nbelt=0;
 
nblig=600;
nbcol=600;
nbelt=nblig*nbcol;
 
tab_IR108=readraw(PATH_IR108,nbelt);
tab_IR120=readraw(PATH_IR120,nbelt);
 
mat_IR108=createmat2D(nblig,nbcol);
mat_IR120=createmat2D(nblig,nbcol);
 
printf("controle : %i - %i\n",tab_IR108[0],tab_IR120[0]);
 
k=0;
for (i=0;i<nblig;i++)
   {
   for (j=0;j<nbcol;j++)
      {
      mat_IR108[i][j]=(double)*tab_IR108[k]/100.0;
      mat_IR120[i][j]=(double)*tab_IR120[k]/100.0;
      k++;
      }
   }
 
... blablabla