こばや小林 2024-02-15 11:05 采纳率: 85.2%
浏览 1
已结题

关于image.at

OpenCV4
我读入了一张图像img
并进行cout<<img.at(0,0);
但控制台无输出。
请问是如何实现对单通道和三通道图像像素点处像素值的读取的?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-15 11:06
    关注

    引自免费微信小程序:皆我百晓生

    在OpenCV 4中,cv::Mat对象(如你读入的图像img)使用.at()方法来访问其像素值。对于不同通道数的图像,读取像素的方式稍有区别:

    单通道图像

    如果你的图像img是一个灰度图像(即单通道图像),你可以通过以下方式读取(0,0)位置的像素值:

    #include <opencv2/opencv.hpp>
    using namespace cv;
    
    int main() {
        Mat img = imread("your_image_path", IMREAD_GRAYSCALE); // 假设这是一张灰度图像
        if (img.empty()) {
            std::cout << "Error: Image not loaded successfully!" << std::endl;
            return -1;
        }
    
        // 访问(0,0)位置的像素值
        uchar pixel_value = img.at<uchar>(0, 0);
        std::cout << "Pixel value at (0,0): " << static_cast<int>(pixel_value) << std::endl; // 输出整数值
    
        return 0;
    }
    

    三通道图像(BGR格式)

    如果img是一个彩色图像(通常在OpenCV中表示为BGR格式的三通道图像),你需要指定每个通道来获取对应颜色分量的像素值:

    #include <opencv2/opencv.hpp>
    using namespace cv;
    
    int main() {
        Mat img = imread("your_image_path", IMREAD_COLOR); // 假设这是一张彩色图像
        if (img.empty()) {
            std::cout << "Error: Image not loaded successfully!" << std::endl;
            return -1;
        }
    
        // 定义一个Vec3b类型的变量来存储BGR三个通道的像素值
        Vec3b pixel_BGR = img.at<Vec3b>(0, 0);
    
        // 分别输出B、G、R通道的像素值
        std::cout << "B channel: " << static_cast<int>(pixel_BGR[0]) << std::endl;
        std::cout << "G channel: " << static_cast<int>(pixel_BGR[1]) << std::endl;
        std::cout << "R channel: " << static_cast<int>(pixel_BGR[2]) << std::endl;
    
        return 0;
    }
    

    关于你的问题,控制台无输出可能是因为:

    • 图像未正确加载。
    • 打印语句之前没有刷新缓冲区(可以尝试添加 std::flush 或换行符 \n 来强制刷新)。
    • 访问的像素点超出了图像边界,请确保访问的位置有效。

    请检查并修改上述代码以适应你的实际情况。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度
  • ¥25 主成分分析中的第一第二主成分分别代表哪些参数
  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下
  • ¥15 android 蓝牙闪退
  • ¥15 绝缘子污秽comsol仿真参数
  • ¥15 labelme生成的json有乱码?