我想获取,让我们在buf中说第二个像素并使用printf打印:
vector<Vec3b> buf;
/* code that fills buf , I used push_back */
printf("%WHAT", buf[1])
我可以使用cout这样打印这些值:
LineIterator it(img, Point(1,1), Point(20,20), 8);
vector<Vec3b> buf;
for(int i=0; i<it.count; i++)
{
buf.push_back( Vec3b(*it) ); /* code that fills buf , I used push_back */
it++;
}
cout << Mat(buf[1]) << endl;
但我只是想用printf来做这件事。
cout语句给了我三个值,每个值对应R,G和B.
我应该在我的printf中放置什么?那格式说明符是什么?
答案 0 :(得分:5)
没有直截了当的方法。有重载&lt;&lt; opencv中的运算符,但没有c解决方案(为什么你甚至想要这个?)
您必须手动完成所有操作:
for(size_t i=0; i<buf.size(); i++)
{
Vec3b v = buf[i];
printf("[%d %d %d] ", v[0], v[1], v[2] );
}
printf("\n");
答案 1 :(得分:3)
你不能将它与printf一起使用,因为它不是标准类型。我认为您应该编写一个函数来为您打印此类型,例如:
void printForMe(vector<Vec3b> buf)
{
for (auto &vec : buf)
{
cout << vec[0] << " " << vec[1] << " " vec[2] << std::endl;
}
}
然后,您还可以编辑格式的显示方式。
如果OpenCv的MatX
类有operator<<
的重载,这会更容易,但事实并非如此,您需要自己制作。