这段代码打印出垃圾值。
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值时,我会打印出垃圾值,
为什么会发生这种情况?
答案 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
...
...