[英]Visualization pixel with Opencv Mat at
我不明白為什么在運行代碼時輸出是一個奇數:
int main(int argc, char** argv)
{
Mat im;
im = imread("lena.png", CV_LOAD_IMAGE_GRAYSCALE);
cout << im.at<uchar>(0, 0) << endl;
waitKey(0);
}
如果我可視化圖像,則會看到正確的圖像。 我哪里錯了?
因為它顯示符號,所以像cout << char(123) << endl;
您必須使用int cast:
cout << (int) im.at<uchar>(0, 0) << endl;
如官方文檔中所述,您不會直接獲得實際強度值,而是得到標量。
嘗試這個:
Scalar intensity = im.at<uchar>(0, 0);
cout << intensity.val[0] << endl;
對於具有多個通道的圖像,可以使用:
Vec3b intensity = im.at<Vec3b>(0, 0);
cout << intensity.val[0] << intensity.val[1] << intensity.val[2] << endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.