OpenCV官方推出了一个叫Image Watch的插件可用于调试时显示和监视图像变量。
官方帮助文档:https://www.mareenoire.info/ImageWatchHelp/ImageWatchHelp.htm
Image Watch是Microsoft Visual Studio的一个插件,它允许我们在调试应用程序时可视化内存中的图像(例如,cv::Mat或IplImage_对象)。 这有助于跟踪错误,或者帮助我们了解特定的代码片段正在做什么(例如本文的示例代码中进行的变换)。
下载安装Image Watch
VS2012-VS2015https://www.mareenoire.info/items?itemName=VisualCPPTeam.ImageWatch
VS2017
https://www.mareenoire.info/items?itemName=VisualCPPTeam.ImageWatch2017
VS2019
https://www.mareenoire.info/items?itemName=VisualCPPTeam.ImageWatch2019
使用Image Watch Image Watch适用于任何使用OpenCV图像对象的现有项目(例如,cv::Mat)。?
确保使用的是debug模式,并且在适当的位置设置的断点,调试运行至断点时即可激活image watch插件。如果没有显示Image Watch窗口,可以使用如下方法调用:菜单栏->视图->其他窗口->image watch,调出该插件。
注意,vs IDE内置的“本地”窗口将仅显示文本。 而Image Watch插件就像是另一个Locals窗口,但内置了一个图像查看器。与Visual Studio的Locals窗口一样,Image Watch可以停靠到Visual Studio IDE。 此外,Visual Studio将记住我们是否打开了Image Watch,以及它在调试会话之间的位置。 也就是说只需执行此操作,下次开始调试时,Image Watch将返回之前我们离开的位置。
?
---
老方法
https://www.mareenoire.info/2017/10/21/Install-ImageWatch-On-VS2017/
工具 》选项 》环境 》选项卡和窗口 》预览选项卡
取消打勾即可
?
这设计真是难受~
Git 代码自动注释工具源码地址
?
VS2010、VS2012、VS2013的代码自动注释插件。安装该插件后,可以在VS的菜单中显示“注释”主菜单,可以给类、函数、成员添加标准的注释,与Doxygen配合使用,可以直接生成项目的注释文档。
【插件下载】
http://www.mareenoire.info/detail/aoshilang2249/8497739
高版本的VS,可以下载源码后,自行编译使用。
【插件安装】
下载后,直接双击安装
【安装效果】
【使用效果】
实际使用时,将光标放在需要添加注释的类名、函数名、变量名上,再选择对应的菜单即可以添加对应的注释了。
//====================================CritSec===================================
/// @brief <对该类进行简单描述>
///
/// <对该类进行详细描述>
//================================================================================
class CritSec
{
private:
CRITICAL_SECTION m_criticalSection; ///< <成员变量说明>
public:
CritSec()
{
InitializeCriticalSection(&m_criticalSection);
}
~CritSec()
{
DeleteCriticalSection(&m_criticalSection);
}
//=====================================Lock()=====================================
/// @brief <对函数进行概括说明>
///
/// <对函数进行详细说明>
///
///
/// @return <返回值说明,可以配合使用DocGenList或DocGenTable>
///
/// @remark <函数特别说明>
///
/// @code
/// <在此添加示例代码>
/// @endcode
///
/// @sa <可以参考的类或函数,用空格分隔,函数名称后必须加()>
//================================================================================
void Lock()
{
EnterCriticalSection(&m_criticalSection);
}
//====================================Unlock()====================================
// <对函数进行描述说明>
//
//
// @return <返回值说明>
//
// @remark <函数特别说明>
//
// 修改历史:1
// 1.修改人:Administrator 2015-03-13
// 修改问题:<简要说明所修改问题>
//================================================================================
void Unlock()
{
// 修改说明:<详细说明修改原因及内容>
// 修改人: Administrator 2015-03-13
LeaveCriticalSection(&m_criticalSection);
}
};
?
?
?