我對openCV提到的here文檔感到困惑。OpenCV文檔說「uchar」是「無符號整數」數據類型。怎麼樣?
作爲每文檔,如果我與創建圖像「UCHAR」,該圖像的像素可以存儲無符號整數值,但如果我用下面的代碼創建一個圖像:
Mat image;
image = imread("someImage.jpg" , 0); // Read an image in "UCHAR" form
或做
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;
}
}
,然後,如果我嘗試使用
0123打印的值然後我在終端得到一些奇怪的結果,但如果我使用以下語句,那麼我可以得到0-255之間的值。
cout<<" "<<(int)image.at<uchar>(i,j); // with TYPECAST
問題:爲什麼我需要做類型轉換來獲得打印0-255之間的值,如果圖像本身可以存儲「無符號整數」的價值觀。
根據標準,「char」,「unsigned char」和「signed char」都是*整數類型*有幫助嗎?也許OpenCV在這句話中使用了真正可憐的白話文? – WhozCraig
這是一個整數,只需要8位,你不把這些位作爲ASCII碼 – Dabo
正確。 「整數」與「32位整數」不同。這裏的所有都是它的。 –