Salut,
Depuis quelques versions maintenant, l'objet "à tout faire" dans OpenCV (calcul, manipulation, stockage, affichage) c'est cv::Mat. Ce n'est ni plus ni moins que la représentation d'une matrice.
Comme tu as déjà les valeurs des pixels dans un tableau (je suppose que les valeurs sont comprises entre 0 et 1 si ce sont des doubles, sinon il faudra qu'elles le soient), le constructeur de cv::Mat qui va t'intéresser est:
Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)
qui te permettra de lui donner en param ton tableau de valeurs. Pour rows et cols, ça se passe de commentaire, et pour type, c'est un define de la forme suivante:
CV_<bit_depth>(S|U|F)C<number_of_channels>
S = Signed integer
U = Unsigned integer
F = Float
E.g.:
CV_8UC1 means an 8-bit unsigned single-channel matrix,
CV_32FC2 means a 32-bit float matrix with two channels.
source (tu peux d'ailleurs jeter un coup d'oeil au reste de cette page)
Je suppose de nouveau que ton image est en niveau de gris, donc une valeur par pixel, et donc 1 seul canal, et un double étant normalement sur 64 bits (je ne connais pas la plateforme sur laquelle tu dev), je te laisse deviner le define à utiliser!
Attention, si par contre ton tableau contient 3 valeurs par pixel pour coder le RGB, OpenCV code par contre en BGR! Il faudra dans ce cas que tu swap d'abord la 1e et 3e valeur de chaque pixel dans ton tableau.
Partager