PDA

Voir la version complète : Python/C++ : images avec profondeur supérieure à 8bits



oli_d
04/01/2011, 19h12
Bonjour à tous,

Je butte sur un problème en python, mais qui serait le même en C++. J'aimerais créer une image d'après un modèle de terrain et j'aurais besoin d'une profondeur supérieur à 8 bits en niveau de gris (en 16 ou en float). J'arrive à créer l'image avec les bons paramètres, le seul problème c'est pour donner les valeurs aux pixels, je suis limité entre 0 et 255 avec la méthode SetPixel().

Est-ce quelqu'un aurait une idée de comment que ça marche ce bazar? (Xs-Yann si tu m'écoutes !)

valkaari
04/01/2011, 23h37
est ce que t'as regardé du coté du multipassBitmap ? (je sais pas je connais pas)


c4d.bitmaps.MultipassBitmap – a multipass bitmap class

This is an extension of the BaseBitmap class that supports higher bit depths, even floating point images, and multiple layers.
The layers are stored hierarchically. There are three kinds of layers:

oli_d
05/01/2011, 04h00
Merci Vaal,

Oui j'ai regardé de ce côté, c'est une classe fille de BaseBitmap et à part SetPixel() je ne vois pas comment donner une valeur à un pixel...

valkaari
05/01/2011, 16h49
faut peut être stocker 8 bits de poids faible sur une couche et les 8bits de poids fort sur une autre couche.

oli_d
06/01/2011, 05h14
J'avais pensé à ça, mais si je prends une image sur photoshop en niveaux de gris 16 bits ou 32 bits et que je fais un dégradé noir-blanc, quand je récupère les valeurs via BaseBitmap j'ai toujours des valeurs du genre (166,166,166) jusqu'a 255.

J'ai posé la question sur PluginCafe, si j'obtiens une réponse je vous (te) tiens au courant ...

xs_yann
06/01/2011, 15h49
Salut oli_d,

Désolé mais j'ai repris l'école et durant 3 semaines c'est tres intensif (piscine), je ne vais pas etre présent sur le forum pendant un certains temps.
Bon courage. ;)

valkaari
06/01/2011, 20h12
du sdk c++

Note: Though the bitmap class can work with other bit depths than 24 and 32, please note that only these function support other bit depths: GetBw(), GetBh(), GetBt(), GetBpz(), Init(), GetLine(), SetLine(), GetPixelCnt(), SetPixelCnt(), SetCMAP(), AddChannel(), RemoveChannel(), GetAlphaPixel(), SetAlphaPixel(), GetInternalChannel(), GetChannelCount(), GetChannelNum() (To use higher bit depths or multiple channels, see MultipassBitmap.)

on trouve donc pas la fonction SetPixel mais y a SetPixelCnt. Fonction qui n'existe pas on dirait dans Python. M'étonnerais qu'à moitié que se soit pas encore fonctionnel dans python ce truc.

Effectivement si t'as la réponse, ça m'intéresse.


Bon yann, tu penses à ton avenir, t'abuses xD

oli_d
07/01/2011, 06h07
Yann on va essayer de se débrouiller sans toi (je sens que ça va être dur...), bon courage !

Merci Vaal, effectivement cela doit être un truc du genre avec des pointeurs et tout le tsoin-tsoin comme j'adore... Il y a effectivement des trucs qui manquent encore dans le python de la r12, vivement la 12.5...

J'ai trouvé peut-être une autre piste, j'ai réussi à installer la bibliothèque PIL qui gère les images en python, il y a plein de fonctions pas disponibles dans le SDK python de C4D. Je décortique et je vous tiens au courant.

valkaari
22/01/2011, 03h00
http://www.plugincafe.com/forum/forum_posts.asp?TID=5438




Unfortunatly both things are currently not possible in Python.

cheers,
Matthias


j'aime beaucoup les trucs impossible, j'adore j'en mange souvent. Une des raisons pour lesquels ça me fait un peu c@#r de me mettre au python là tout de suite maintenant. C'est déjà "casse gngngngn" je trouves, si en plus tu arrives sur des "ha ben spa possible" (et y en a en c++ aussi) juste un gros Gggrrrrrrr

oli_d
22/01/2011, 06h07
C'est vrai qu'il y a encore deux trois petites choses qui manquent et que c'est ch*>nt de perdre du temps en essayant des trucs qui sont en fait pas possible, en se disant qu'on doit être un peu limité du cerveau, alors que c'est des coquilles (sans q). Mais qu'est ce qu'on se marre bien !

A part ça je suis parti sur des bibliothèques externes pour les images qui sont tops. C'est un peu galère à installer au début, mais je commence à mieux comprendre certains trucs (j'essaierai de faire un petit tuto dès que j'ai vraiment tout compris et que j'ai le temps)

Pour les images il y a PIL qui permet de faire plein de choses et qui comble les limites actuelles du python C4D.

Mais pour ce que je cherchais à faire j'ai trouvé le saint Graal : GDAL/OGR, une bibliothèque qui permet de travailler avec à peu près n'importe quelle format de données géographiques qu'elles soient vectorielles(avec OGR) ou raster (avec GDAL). En fait c'est une bibliothèque c++ à la base.

Couplé à la bibliothèque Numpy (pour travailler avec des matrices de type image) c'est redoutable !

De toute façon maintenant j'ai plus le choix, je suis vraiment accro au python ...

valkaari
23/03/2011, 09h19
avec la mise à jour 12.043 : 32-bit images are supported with byte sequence object.
A voir donc si hein voilà .... pas testé encore.

oli_d
23/03/2011, 10h19
merci pour l'info j'm'en va tester tout ça ...