使用printf时vector <Vec3b>的格式说明符

gpu*_*guy 2 c c++ opencv

我想获取,让我们,说出buf中的第二个像素并使用printf进行打印:

vector<Vec3b> buf;
/* code that fills buf , I used push_back */
printf("%WHAT", buf[1])
Run Code Online (Sandbox Code Playgroud)

我可以使用像这样的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;
Run Code Online (Sandbox Code Playgroud)

但我只是想用printf来做这件事.

cout语句给出了三个值,每个值对应于R,G和B.

我应该在我的printf中放置什么?即这里的格式说明符是什么?

ber*_*rak 5

没有直接的方法可以做到这一点.在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");
Run Code Online (Sandbox Code Playgroud)