在 GDB、C++ 中调试 OpenCV 矩阵

Posted

技术标签:

【中文标题】在 GDB、C++ 中调试 OpenCV 矩阵【英文标题】:Debugging OpenCV matrices in GDB, C++ 【发布时间】:2017-02-14 14:20:28 【问题描述】:

我试图在 gdb 中调试时查看 Opencv 矩阵。

我尝试使用此脚本cv_imshow.py。

首先采购import Image 不起作用。它失败了,因为 gdb 使用了没有 PIL 或 Pillow 的 python 3。

然后我为 Python 3 安装了 Pillow: pip3 install Pillow

然后将import Image 替换为: from PIL import Image

剩下的问题是将 cv_imshow.py 从 python 2 转换为 python 3。

这是我所做的:

- return (seq[pos:pos + size] for pos in xrange(0, len(seq), size)) 
+ return (seq[pos:pos + size] for pos in range(0, len(seq), size))

还将unicode 替换为str

但是当我输入时

(gdb) source /home/user/gdb-imshow/cv_imshow.py 
(gdb) cv_imshow img_color

我收到以下错误:

CV_8U with 3 channels, 512 rows and 512 cols 
Python Exception <class 'typeerror'=""> argument must be a sequence:     
Error occurred in Python command: argument must be a sequence

如何修复这个错误?让这个脚本与 python 3 兼容?

使用 Ubuntu 14.04 LTS, GDB 7.7.1

【问题讨论】:

【参考方案1】:

您不是第一个尝试将此脚本用于 python 3 的人。您检查过this 吗?

【讨论】:

请避免仅提供链接,并尝试至少发布有关解决方案的更多信息。我的链接有时会消失,使您的答案(?)无效。此外,您的答案格式更像是评论。 太棒了。以防万一有人在使用 Tkinter 时遇到同样的错误:sudo apt-get install python3-tk

以上是关于在 GDB、C++ 中调试 OpenCV 矩阵的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 在 OpenCV 中的矩阵中的多维数据

如何使用带有 eigen 数学库的 gdb 进行调试

OpenCV C++ 相机图像未保存到矩阵

通过单应矩阵转换向量时出错 - C++ OpenCV

如何在 C++ 中将 OpenCV 2D 矩阵转换为 1D 数组?

Opencv C++ 声明 uint8 类型的矩阵