2

cv::Mat オブジェクトのグレースケール ピクセルの値にアクセスする方法を探しています。多くの答えを見つけることができ、うまくいったと確信していますが、私にとってはうまくいきません。したがって、基本的に私が持っているものは次のとおりです。

    gray_image = imread("myimage.png", CV_LOAD_IMAGE_GRAYSCALE);

    equalizeHist(gray_image, eq_image);

    // This line prints garbage
    const unsigned char* row = eq_image.ptr<unsigned char>(10);
    cout << row[10] << endl;

    // This line also prints garbage
    cout << eq_image.at<uchar>(10, 10) << endl;

位置(10,10)にあるピクセルのグレースケール[0,255]値を確認したいだけです。これらの2行が他の人にはうまくいったと確信していますが、私にはうまくいきませんでした。おそらくLinuxの問題です。

cv::Mat ピクセルをグレースケール整数で読み取るにはどうすればよいですか?

ありがとうございました、

4

1 に答える 1

6

値は ASCII 文字として出力されます。これは、実際の値によっては、出力できないガベージである可能性があります。代わりにピクセル値を整数として出力したい場合は、値を にキャストしてint、他のoperator<< オーバーロードを取得する必要があります。

cout << static_cast<int>(row[10]) << endl;
于 2013-03-13T19:47:50.493 に答える