Je rencontre un comportement très étrange dans cpp. Je fais un traitement d'image en parallèle en utilisant le framework MPI, et j'ai besoin de convertir un tableau 2D de JSAMPLE en un tableau plat de caractères non signés. Je suis capable de faire ceci, cependant quand j'essaye d'écrire l'image de la rangée plate dans un fichier JPEG la sortie est floue, cependant si je règle la valeur de la sortie de la rangée plate au même point je l'ai lue le tableau 2d fonctionne très bien.Comment manipuler JPEG dans cpp en utilisant des caractères?
C'est très étrange pour moi. Je suis un développeur cpp assez expérimenté mais je n'ai pas beaucoup travaillé avec la bibliothèque JPEG. Je pense que cela pourrait avoir quelque chose à voir avec l'allocation de mémoire.
// create a flat array of unsigned chars from image
char* flat_image_array = new char[span*Input.Width*Input.Components];
for(int j = 0; j < span; ++j) {
for (int k = 0; k < Input.Width * Input.Components; ++k) {
flat_image_array[j*k+k] = imageSegment[j][k];
// if I set output here it works fine
//Output.Rows[j][k] =flat_image_array[j*k+k];
}
}
for(int j = 0; j < span; ++j) {
for (int k = 0; k < Input.Width * Input.Components; ++k) {
//but if I set output here the image comes out very fuzzy
Output.Rows[j][k] = flat_image_array[j*k+k];
}
}
std::stringstream file;
file << "Data/segment_" << (i) <<".jpg";
if(!Output.Write(file.str().c_str())){
printf("Cannot write image\n");
return;
}