如何访问OpenCV图像的所有通道

时间:2012-07-17 18:24:12

标签: c++ image opencv

我有一个像这样创建的OpenCV图像:

cv::Mat img(XN_VGA_Y_RES, XN_VGA_X_RES, CV_64FC3, cv::Scalar(0));

如何访问其所有像素?

我试过了:

for (int x=0; x < XN_VGA_X_RES; x++) {
    for (int y=0; y < XN_VGA_Y_RES; y++) {
        img.at<double>(y,x) = 1;
    }
}

然而,当我这样做时,只有1/3的图像是白色的。我猜这是因为我的图片中有3个频道,但我怎样才能访问它们?我尝试了img.at<double[3]>(y,x)img.at<cv::Vec3f>(y,x)等各种内容,但它们似乎无法正常工作。

1 个答案:

答案 0 :(得分:4)

试试这个:

img.at<cv::Vec3d>(y, x)[0] = 1;
img.at<cv::Vec3d>(y, x)[1] = 1;
img.at<cv::Vec3d>(y, x)[2] = 1;