bounty还有7天到期。回答此问题可获得+400声望奖励。touraille希望引起更多关注此问题。
我正在使用Microsoft
扩展Image Watch来预览OpenCV
图像。
我试图通过添加容器键来可视化容器中的图像,但是Visual Studio
调试器监 windows 口不支持直接在容器中添加变量。
举例来说:
#include <opencv2/opencv.hpp>
struct MyStruct {
cv::Mat img;
};
int main() {
cv::Mat img(64, 64, CV_8UC3, cv::Scalar(0, 0, 255));
map["a"].img = img;
cv::Mat myImg = map["a"].img;
}
字符串
当我尝试通过添加到监 windows 口map["a"].img
来可视化图像时,它无效。
我需要从检查/迭代Map开始添加它,直到找到所需的键:
x1c 0d1x的数据
只有输入这个名字才有效:((std::_Tree_node<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,MyStruct>,void *>*)0x0000026e1a358a70)->_Myval.second.img
个
经过大量的搜索,我发现了这个:Natvis framework的函数。
我想知道它是否能为这个用例工作,我以前从未使用过Natvis。
我按照教程的要求,在我的项目中添加了一个新的.natvis
:Project > Add new item > Visual C++ > Utility > Debugger visualization file (.natvis).
个
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
</AutoVisualizer>
型
现在我完全迷路了,我已经重新阅读了示例,但我仍然无法弄清楚如何创建特定的视图,以便能够通过其键预览图像,即。map["a"].img
。
1条答案
按热度按时间qoefvg9y1#
是的,Natvis框架可以帮助可视化存储在Map等容器中的OpenCV图像等对象。这里有一种方法来做到这一点:
1.在.natvis文件中,添加以下内容:
字符串
这告诉Visual Studio如何可视化
std::map<string, MyStruct>
-它将显示大小并允许扩展Map以显示存储在每个键下的MyStruct
值。1.要可视化OpenCV映像,您需要添加以下内容:
型
这将显示有关垫子的一些信息,并让您展开它以显示图像。
1.最后,在您的手表窗口中,您现在可以输入类似
map["a"]
的内容,并将其展开以查看键“a”下的OpenCV图像!关键的事情是自定义Map和OpenCV Mat的可视化,以允许在调试器中扩展它们。
嘣