L'accès aux éléments de OpenCV CV_8UC1 cv::Mat
J'ai un cv::Mat de type CV_8UC1 (8 bits de canal unique de l'image) et je voudrais accéder à des éléments à l'aide de la at<>
opérateur comme suit: image.at<char>(row, column)
. Cependant, lors de la coulée de int
: (int) image.at<char>(row, column)
, certaines valeurs négatives, par exemple, 255 devient -1.
Cela peut être une question stupide, mais je ne peux pas dire pourquoi ce qui se passe et ce serait un meilleur moyen pour convertir les entrées de int
.
Merci d'avance!
Vous devez vous connecter pour publier un commentaire.
Vous devez indiquer que les éléments sont unsigned char, entre 0 et 255 , sinon ils seront en char (signé), de -128 à 127. Le casting sera de cette façon:
Dans la matrice de type CV_8 UC 1 représente Unsigned Char.
Donc, vous avez à écrire
U
est synonyme de non signé, mais queC
signifie canal, ce qui signifie le type de variable est de 8 bits, non signé, et un seul canal. Ainsi, par exemple,CV_16SC2
est un 2 canaux 16 bits (par canal) ont signé un type de données (qui n'a rien à voir avec unchar
, bien qu'il y est unC
là).