image Watch高级应用:自定义图像格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012435142/article/details/79713105

image Watch高级应用:自定义图像格式

image watch documents
https://imagewatch.azurewebsites.net/ImageWatchHelp/ImageWatchHelp.htm#_Toc351981452

Image watch是一个vs的扩展插件,可以在调试代码过程中方便的显示图像。Image Watch支持OpenCV的四类图像类型:_cv::Mat__<>,_cv::Mat_, _CvMat_, __IplImage_,是OpenCV编程调试的神器。网上有很多关于Image Watch结合OpenCV的安装和使用教程,也许现在已经用的很熟练了。但是也许你并不知道,原来Image Watch也支持自定义的图像格式,也就是说你可以在自己开发图像处理程序,不依赖OpenCV时也用上此神器。
下面就介绍如何给Image Watch添加自定义图像格式。

1.首先明确Image Watch支持的像素格式
· INT8, UINT8
· INT16, UINT16
· INT32
· FLOAT16
· FLOAT32
· FLOAT64


使用例子

Image Watch 安装好之后配置目录:
C:\Users\steve\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\kcc2xu35.30r\
定义自己的图像类型

struct M8UImage
{
    int cols;
    int rows;
    int  channels;
    unsigned char* data;
};

新建配置文件ImageWatchMyImage.natvis,保存到”C:\Users\steve\Documents\Visual Studio 2013\Visualizers\”目录下

<?xml version="1.0" encoding="utf-8"?>

<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

  <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1"

                MenuName="Add to Image Watch"/>
  <Type Name="M8UImage">

    <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />

  </Type>

  <Type Name="M8UImage">

    <Expand>

      <Synthetic Name="[type]">

        <DisplayString>UINT8</DisplayString>

      </Synthetic>
      <Item Name="[channels]">channels</Item>
      <Item Name="[width]">cols</Item>
      <Item Name="[height]">rows</Item>
      <Item Name="[data]">data</Item>
      <Item Name="[stride]">cols*channels</Item>

    </Expand>

  </Type>  

</AutoVisualizer>

VS中编程实例

#include<iostream>
struct M8UImage
{
    int cols;
    int rows;
    int  channels;
    unsigned char* data;
};
int main()
{
    M8UImage mImg;
    mImg.rows = img1.rows;
    mImg.cols = img1.cols;
    mImg.channels = 1;
    unsigned char * data = new unsigned char[512 * 640 * 1]();
    for (int i = 0; i < 512 * 640 * 1; i++)
    {
        data[i] = (int)(i / 256);
    }
    mImg.data =data;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u012435142/article/details/79713105