我有一个像这样创建的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)
等各种内容,但它们似乎无法正常工作。
答案 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;