簡體   English   中英

使用Opencv Mat的可視化像素位於

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM