Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

bytes array to image

Résolu !
Accéder à la solution

Bonjour à tous

 

Comment peux t'on  reconstruire une image couleur  à partir d'un tableau  1D type " bytes array" ?

En fait, je sais enregistrer ce fichier binaire sur le disque mais je voudrais lire l'image avant son enregistrement.

Merci pour vos infos.

Cordialement.

0 Compliments
Message 1 sur 23
3 780 Visites

Bonjour,

 

La fonction Draw Flattened Pixmap pourrait être la réponse à votre question.

 

Reste à savoir comment sont structuré les données brutes sous forme d'un tableau d'octets, c'est à dire les données qui vont autour du tableau de U8 Image dans le cluster image data.

 

Si vous maitrisez la source de votre tableau de données, ce devrait être relativement simple à reconstituer. Ca peut valoir le coup de faire quelques manipulation "pour voir" à l'aide de petits fichiers images et des fonctions Read PNG File / Read JPEG File / Read BMP File. Ces fonction permettent de récupérer un cluster image data.

 

Cordialement,

0 Compliments
Message 2 sur 23
3 769 Visites

Merci Mathieu pour ta réponse rapide.

J'ai déjà essayé avec Draw flattened pixmap mais seul il ne fonctionne pas évidemment.

En fait, j'ai un premier vi qui me génère un tableau d'octets qui est ensuite enregistré avec un vi d'enregistrement de fichiers binaires classiques.

Avec le Read Jpeg je dois aller rechercher le fichier, donc l'image enregistrée. Et c'est ça que je veux zapper :  l'enregistrement sur disque dur .

Il faudrait que je puise partir du Tableau binaire  généré par mon premier vi et construire l'image de façon à la mettre en mémoire et non pas dans un fichier ...

0 Compliments
Message 3 sur 23
3 759 Visites

Ce VI qui génère le tableau d'octets, d'où sort-il? Quelle est l'orgine de ces données? Est-ce que, à tout hasard, ce VI peut être posté sur le forum, ou à défaut, un VI avec un tableau en constante pour pouvoir faire quelques essais?

 

Si on se réfère à l'aide de la fonction Draw Flattened Pixmap, et pour que celle-ci puisse fonctionner correctement, il faut fournir d'autres information dans le cluster image data. D'une manière plus générale, et en faisant abstraction de cette fonction, il faudra de toute façon avoir une idée de comment sont structurées les données dans ce tableau d'octet pour pouvoir les intérpréter et générer une image.

 

Deux questions :

  • Quelle est la profondeur de couleur de l'image (image depth), i.e. combien de bits codent la couleur d'un pixel, très schématiquement ?
  • Quelle est la dimension de l'image ?
0 Compliments
Message 4 sur 23
3 755 Visites

C'est un vi propriétaire de chez Canon. Il sert dans le pilotage d'un appareil photo.

Sans l'apn tu ne pourras pas le faire fonctionner.

En gros, si j'ai une image qui fait 6 Mo mon fichier est un tableau qui fait 6 000 000  de lignes. Chaque ligne est codée entre 0 et  255. Après je ne sais pas comment sont récupérées les données pour construire l'image.

Les pixmap sont des tableaux à 2 colonnes de la valeur du pixel.

Là seulement une seule colonne ! N'étant pas un spécialiste des images...je me pose des questions 🙂

L'image fait aux environ de 21 Mpixels : 5600x3700

0 Compliments
Message 5 sur 23
3 737 Visites

Ok, c'est pas gagné en effet.

 

Est-ce que Canon documente quelque part le format des données? C'est du RAW? Au quel cas, peut-être ceci pourra être intéressant : Understanding What is stored in a Canon RAW .CR2 file, How and Why

 

A noter, une autre requête dans mon moteur de recherche favori me proposait cette page : un rapport avec les VI propriétaires évoqués?

 

Bon courage,

0 Compliments
Message 6 sur 23
3 733 Visites

On  est sur un format Jpeg. L'appareil peut sortir les 2 formats mais je prend celui là car il est moins imposant.Je sais que ce n'est pas le plus adapté pour l'analyse photo mais en mettant un taux de compression au plus faible c'est pas trop mal.

0 Compliments
Message 7 sur 23
3 716 Visites

Le contenu du tableau serait-il strictement à l'image (si j'ose dire) du contenu du fichier JPEG ? Ceci peut se vérifier rapidement à l'aide d'un bout de code permettant de relire le contenu du fichier, et de comparer le tableau fileContent ci-dessous au tableau issu des VIs Canon :

byteArray.png

 

Si cette hypothèse est confirmée, ce serait le contenu d'un fichier JPEG qu'il faut être capale d'interpréter (compression de l'image). Autant dire que de ne pas passer par un fichier, même temporaire, va nécessiter soit de coder cette interprétation, soit de trouver une bibliothèque permettant de le faire.

 

L'utilisation d'un fichier temporaire pour afficher l'image pourrait-elle être une solution acceptable ?

0 Compliments
Message 8 sur 23
3 710 Visites

L'idée est de réduire les temps d'accès au Disque dur : . enregistrement et ensuite lecture dans la foulée. Vu la taille des photos je ne peux descendre actuellement  en dessous de la seconde sans risquer un blocage.

Donc mon idée etait de prendre la photo, la mettre dans une mémoire , la lire , la traiter et effacée la mémoire...

Quand au fichier...

Le tableau avant enregistrement me donne par exemple 7 000 000 de lignes avec o à 255 et l'ouverture avec ton bout de code me donne 7 000 000 de lignes avec des valeurs négatives et positives sur une dizaine de chiffres ...

C'est pas un pb de codage de l'image sur 8 ou 16 bits ?

Ca me dépasse ! 🙂

0 Compliments
Message 9 sur 23
3 701 Visites

La fonction lit un fichier en binaire, mais il faut lui spécifier le type de données attendu (Cf. Read from Binary File Function). La combinaison constante numérique U8 pour data type et -1 pour le count permet de lire l'intégralité d'un fichier sous forme d'octets.

 

Dans notre cas, il faut donc que la constante au dessus de la fonction de lecture soit de type U8 (clic droit sur la constante, Representation » U8). Le tableau doit être du même type.

0 Compliments
Message 10 sur 23
3 695 Visites