C++ 为什么通过imread加载图像后像素值为0?

C++ 为什么通过imread加载图像后像素值为0?,c++,opencv,C++,Opencv,我使用imread(………-GRAYSCAle)将图像(png)文件直接从3通道加载到1通道,我可以在灰度上看到图像,但像素值是0,而不是1。感谢您的帮助 cv::Mat image=cv::imread(filename1, CV_LOAD_IMAGE_GRAYSCALE); if (!image.data){ std::cout<<"Problem laoding image"; } cv::namedWindow("Window1"); cv::imshow("Win

我使用imread(………-GRAYSCAle)将图像(png)文件直接从3通道加载到1通道,我可以在灰度上看到图像,但像素值是0,而不是1。感谢您的帮助

cv::Mat image=cv::imread(filename1, CV_LOAD_IMAGE_GRAYSCALE);
if (!image.data){
    std::cout<<"Problem laoding image";
}

cv::namedWindow("Window1");
cv::imshow("Window1",image);

for (i=0;i<720;i++){
    for (j=0;j<720;j++){

        std::cout<<image.at<int>(j,i)<<std::endl;
        //printf("%d \t", vPixel);
    }
}
cv::Mat image=cv::imread(filename1,cv\u LOAD\u image\u灰度);
如果(!image.data){

std::coutOpenCV将图像加载为CV_8UCX(在您的情况下,它将是CV_8UC1)类型。因此,要打印所有像素值,您应该使用模板参数
unsigned char
uchar
调用
at()

for (int i = 0;i < image.rows; i++) {
  for (int j = 0; j < image.cols; j++) {
    std::cout<<image.at<uchar>(i, j)<<std::endl;
  }
}
for(int i=0;istd::couta在我换成uchar后,什么都不打印。