inRange和Mat错误

时间:2014-03-04 15:42:25

标签: c++ opencv

我正在使用OpenCVwith Eclipse。

我需要检测人体皮肤,所以我将图像转换为HSV,我使用inRange函数获取带有白色皮肤图像的Mat。

现在的问题是,我需要检测哪些组件是白色以修改原始帧中的这些像素(我正在用摄像机改变肤色),但我无法访问返回的Mat INRANGE

cvtColor(frame,frame,CV_BGR2HSV);
        Mat n;
        inRange(frame, Scalar(0, 10, 60), Scalar(20, 150, 255), n);


        for(int i=0;i<frame.rows;i++)
        {
            for(int j=0;j<frame.cols;j++)
            {

                n.at(&i);
                            //n(i,j);

            }
        }

这是有问题的代码。当我进入内部循环时,构建失败会引发很多错误,并引用模板。

任何人都知道如何访问此矩阵?还有另一种方法来实现我的目标吗?也许我使问题复杂化了。

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

与inRange等无关,它只是你的Mat访问代码,已经坏了。

Vec3b & hsvPixel = n.at<Vec3b>(i,j);
// hsvPixel[0] = h;    
// hsvPixel[1] = s;
// hsvPixel[2] = v;