2

我有一个这样创建的 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)or img.at<cv::Vec3f>(y,x),但它们似乎不起作用。

4

1 回答 1

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;
于 2012-07-17T18:29:49.323 回答