OpenCV documentation dit que “char” est “unsigned integer” type de données. Comment?

J'ai confondu avec le openCV documentation mentionnée ici.

Que par la documentation, si je crée une image avec "char", les pixels de l'image peut stocker entier non signé valeurs, mais si je créer une image en utilisant le code suivant:

Mat image;
image = imread("someImage.jpg" , 0); //Read an image in "UCHAR" form

ou en faisant

image.create(10, 10, CV_8UC1);
for(int i=0; i<image.rows; i++)
{
    for(int j=o; j<image.cols; j++)
    {
        image.at<uchar>(i,j) = (uchar)255;
    }
}

et puis si j'essaie d'imprimer les valeurs à l'aide

cout<<"  "<<image.at<uchar>(i,j);

puis-je obtenir bizarre résultats au terminal, mais si j'utilise l'instruction suivante, alors je peux obtenir les valeurs entre 0 et 255.

cout<<"  "<<(int)image.at<uchar>(i,j); //with TYPECAST

Question: Pourquoi dois-je faire transtypage pour obtenir d'imprimer les valeurs dans la gamme de 0 à 255 si l'image elle-même peut stocker "unsigned integer" valeurs.

Il aide à tous de savoir que char, unsigned char, et signed char sont tous les types integer par la norme? Peut-être OpenCV juste utilisé vraiment pisse-pauvres vernaculaire dans cette phrase?
C'est un entier qui ne prend que 8 bits, vous ne traitez pas ces éléments comme des codes ascii
La droite. integer n'est pas le même que 32 bit integer. C'est tout là est à lui.
désolé mais je suis incapable de comprendre vos sens en raison de mon peu de c++/opencv connaissances. ne opencv docs aussi dire que "char" signifie "unsigned char" ou pas?

OriginalL'auteur user2756695 | 2014-03-01