相关疑难解决方法(0)

在openCV中访问某些像素RGB值

我已经彻底搜索了互联网和stackoverflow,但我没有找到我的问题的答案:

如何在OpenCV中获取/设置(两者)某些(由x,y坐标给定)像素的RGB值?重要的是 - 我用C++编写,图像存储在cv :: Mat变量中.我知道有一个IplImage()运算符,但IplImage在使用中不是很舒服 - 据我所知它来自C API.

是的,我知道在OpenCV 2.2线程中已经有这个Pixel访问,但它只是关于黑白位图.

编辑:

非常感谢您的所有答案.我看到有很多方法来获取/设置像素的RGB值.我从亲密的朋友那里得到了一个想法 - 谢谢Benny!这非常简单有效.我认为这是一个你选择的品味问题.

Mat image;
Run Code Online (Sandbox Code Playgroud)

(......)

Point3_<uchar>* p = image.ptr<Point3_<uchar> >(y,x);
Run Code Online (Sandbox Code Playgroud)

然后你可以读取/写入RGB值:

p->x //B
p->y //G
p->z //R
Run Code Online (Sandbox Code Playgroud)

c++ opencv

70
推荐指数
2
解决办法
13万
查看次数

访问OpenCV中灰度图像的像素值

我只是想明白我的概念 - 访问cv :: Mat的所有矩阵元素意味着我实际上访问了图像的所有像素值(灰度 - 1通道和颜色 - 3通道)?就像假设我的代码用于打印加载1通道图像并键入CV_32FC1的灰度矩阵的值,如下所示,那么这是否意味着我只访问cv :: mat的成员或者我正在访问图像的像素值(1通道 - 灰度和CV_32FC1型)也?

    cv::Mat img = cv::imread("lenna.png");
    for(int j=0;j<img.rows;j++) 
    {
    for (int i=0;i<img.cols;i++)
      {
        std::cout << "Matrix of image loaded is: " << img.at<uchar>(i,j);
      }
    }
Run Code Online (Sandbox Code Playgroud)

我对OpenCV的图像处理很陌生,想要清除我的想法.如果我错了,那么如何访问图像的每个像素值?

c++ opencv image-processing

13
推荐指数
2
解决办法
8万
查看次数

标签 统计

c++ ×2

opencv ×2

image-processing ×1