在GDB调试器中显示cv2 Mat

时间:2018-08-21 07:14:32

标签: c++ opencv

我正在GDB中调试用于Python的C ++编写的函数。该功能利用了OpenCV。是否可以在GDB调试器中显示OpenCV Mat的值?

对于Mat yp,这只是我得到的:

(gdb) print(yp) 

$48 = {flags = 1124024325, dims = 2, rows = 1, cols = 100, 
  data = 0x7fff979c9530 "", refcount = 0x7fff979c96c0, 
  datastart = 0x7fff979c9530 "", dataend = 0x7fff979c96c0 "\001", 
  datalimit = 0x7fff979c96c0 "\001", allocator = 0x0, size = {
p = 0x7fffffff9ab8}, step = {p = 0x7fffffff9b00, buf = {400, 4}}}

(gdb) print(yp.at<float>(0,1))
Cannot evaluate function -- may be inlined

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令将yp.data打印为200个浮点数的数组,并注意200 =行* cols *暗淡: (gdb) print *(float *)yp.data@200

在这里,我依靠cv :: Mat的数据成员是指向数据缓冲区的指针这一事实。假定默认跨度(步长)为1,这应该可以与OpenCV 2.x,3.x和4.x一起使用。