2014-03-04 29 views
0

我正在使用OpenCV和Eclipse。inRange和Mat錯誤

我需要檢測人體皮膚,因此我將圖像轉換爲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); 

      } 
     } 

這是有問題的代碼。當我到達內部循環時,構建失敗會引發很多涉及模板的錯誤。

任何人都知道我該如何訪問這個矩陣?有沒有另一種方法來實現我的目標?也許我會使問題複雜化。

謝謝你的時間。

回答

3

與inRange無關或只是你的Mat訪問代碼,這是破碎的。

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