c – 如何在Opencv中访问RGB值?

前端之家收集整理的这篇文章主要介绍了c – 如何在Opencv中访问RGB值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对使用多个频道感到困惑.
以下哪一项是正确的?
// roi is the image matrix

for(int i = 0; i < roi.rows; i++)
{
    for(int j = 0; j < roi.cols; j+=roi.channels())
    {
        int b = roi.at<cv::Vec3b>(i,j)[0];
        int g = roi.at<cv::Vec3b>(i,j)[1];
        int r = roi.at<cv::Vec3b>(i,j)[2];
        cout << r << " " << g << " " << b << endl ;
    }
}

要么,

for(int i = 0; i < roi.rows; i++)
{
    for(int j = 0; j < roi.cols; j++)
    {
        int b = roi.at<cv::Vec3b>(i,j)[2];
        cout << r << " " << g << " " << b << endl ;
    }
}

解决方法

第二个是正确的,
Mat内的行和列表示像素数,
而通道与行和列号无关.
和CV默认使用BGR,所以假设Mat没有转换为RGB,那么代码是正确的

参考,个人经验,OpenCV docs

原文链接:https://www.f2er.com/c/118785.html

猜你在找的C&C++相关文章