错误:标识符<uint8_t>未定义,是否可以在openCV中使用

时间:2016-05-04 12:17:33

标签: visual-studio opencv image-processing

int cn = img_V.channels();
Scalar_<unit8_t> bgrPixel;

for (int i = 0; i < img_V.rows; i++)
{
    uint8_t* rowPtr = img_V.row(i);
    for (int j = 0; j < img_V.cols; j++)
    {
        bgrPixel.val[0] = rowPtr[j*cn + 0]; // B
        bgrPixel.val[1] = rowPtr[j*cn + 1]; // G
        bgrPixel.val[2] = rowPtr[j*cn + 2]; // R

        // do something with BGR values...
    }
}

我正在使用Visual Studio和OpenCV但它无法识别uint8_t显示错误。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

你需要:

#include <cstdint>

查看 uint8_t

但请注意,在OpenCV中,您应该使用uchar

另请注意,您没有正确循环。 一个正确的方法是:

for (int i = 0; i < img_V.rows; i++)
{
    Vec3b* rowPtr = img_V.ptr<Vec3b>(i);
    for (int j = 0; j < img_V.cols; j++)
    {
        Vec3b& bgrPixel = rowPtr[j];

        // do something with BGR values...
    }
}

答案 1 :(得分:0)

由于您可能正在处理图像,我认为img_Vcv::Mat。根据最新的documentationcv::Mat::row(int y)会返回另一个cv::Mat。但是没有任何默认转换为uint8_tuchar

但是,如果要将指针添加到图像的特定行,则应使用cv::Mat::ptr(int i0),它返回uchar *或任何其他类型指针如果您使用其模板版本。

但是你需要一个uint8_t指针,你首先要像Miki所说的那样做,#include <csdtint>