为什么在OpenCV中打印出像素颜色时,我会获得垃圾值而不是RGB?

时间:2013-09-11 10:49:51

标签: opencv pixel mat

这段代码打印出垃圾值。

cv::Mat_<cv::vec3b>::iterator it = img.begin<cv::vec3b>(),
itEnd = img.end<cv::vec3b>();

for(; it != itEnd; ++it)
   std::cout << (*it)[1] << std::endl;

但这会打印出RGB值的矢量。

  

std :: cout&lt;&lt; img.at(100,200);

当我尝试访问各个RGB值时,我会打印出垃圾值,

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

我不确定OpenCV,但如果你的向量中的每个元素的格式都是[221,123,321],那么根据','分隔符单独拆分字符串,你可以检索单个像素值。

我的理解是这样的:

 #include<sstream>

 string buf;

 cout<<"Printing elements:"<<endl;

 for(unsigned i=0;i<img.size();i++)
 {
   istringstream is(img[i]);

   while(getline(is, buf, ','))
   {
     if(buf.at(0)=='[')
     {
       buf.erase(0, 1);
     }
     if(buf.at(buf.length()-1)==']')
     {
       buf.erase(buf.length()-1, buf.length());
     }
     cout<<buf<<endl;
   }  
 }

<强>输出

印刷元素:

221

123

321

...

...