我正在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
答案 0 :(得分:2)
您可以使用以下命令将yp.data打印为200个浮点数的数组,并注意200 =行* cols *暗淡:
(gdb) print *(float *)yp.data@200
在这里,我依靠cv :: Mat的数据成员是指向数据缓冲区的指针这一事实。假定默认跨度(步长)为1,这应该可以与OpenCV 2.x,3.x和4.x一起使用。