Image Watch

Microsoft Free

Provides a watch window for visualizing in-memory images (bitmaps) when debugging native C++ code.

Microsoft
(35) Review
Visual Studio
2013, 2012
Download (32,719)
3/17/2014
1.5.1103.0
View
E-mail Twitter del.icio.us Digg Facebook
Add to favorites
Description
Reviews (35)
Q and A (73)
Sign in to write a review
Sort by:

by Baris Demiroz | Tue 2:53 PM

by Eejdoowad | March 13 2015

by Jaka Konda | March 03 2015

by vuki | February 27 2015

A must if you program with OpenCV

by bambambigelow | January 28 2015

this is an amazing extension! works like a charm and saves a lot of hassle while debugging opencv code

by Y.T. Tommy HU | January 08 2015

by Lukas Neumann1 | December 19 2014

Works like a charm, this add-in is a must for everyone working with OpenCV in Visual Studio.

by Elador | December 16 2014

THE best and most amazing plugin ever! Makes coding so much more productive, and more fun as well.

If you want one suggestion on what to improve, I'd say @mem(...). I don't needed it often, but when I'd need it, I most of the time can't get it to work. It's kind of documented, but I'm never sure: Do I put in the name of the variable? or '&variable'? or the address? or the address with 0x...? or...? and more often than not it's not working, and also not printing any error/debug information.

I think what would be useful as well is a small button that opens a menu that shows all the operators you can use, and their syntax - like a small documentation inside.

But those are just some tiny suggestions. It is incredible as it is!

by Mor CH | November 09 2014

absolutely useful and great, but I want this add-on for both Xcode and eclipse (Mac and Linux) very bad please.

by John Dance | September 12 2014

This makes debugging image handling so much easier. I love it! Thank you! The ability to extend to my image types (QImage/QPixmap) is a game changer.

by Rob42_ | August 04 2014

Thanks for this great extension to Visual Studio,
would like to see this open sourced to add even more features.

by Mudit Agrawal | June 24 2014

This is indeed a game changer! Debugging in-memory images has always been so hard in VS. The simple power of Image-Watch visualization, combined with the efficient operators can turn hours of debugging to minutes or seconds.

Great work!

by lin jingxian | April 06 2014

sounds good, but can not use with vs 2013 express ?

by V.N.V | February 23 2014

Just a note to say a simple Thank You to the author.

This extension is excellent.

It provides a "quicklook" into a sequence of images from a loop.

Without it, I'd be spending much more time on the problem. I'd need to save each image to disk, with a serialized name,
and bring each up individually in an external viewer.

by Daehoe Kim | January 28 2014

Excellent tool. I love it :)

by Chris Sienkiewicz | December 26 2013

Fantastic add in, makes working with images so much easier.

by Akhil Prem | November 19 2013

Very handy when working with images. I love it that I can use it with custom image types using NatVis.

by Trass3r | November 14 2013

This is a lifesaver!

by sarthakpati | October 01 2013

by LevonGn | September 26 2013

1 - 20 of 35 Items   
Sign in to start a discussion


  • Possible factor of [invalid] mat errors
    1 Posts | Last post Fri 8:43 PM
    • I was debugging an opencl related routine when, suddenly, all of my Mat's became [invalid] on the Image Watch -- it simply stopped woring. It turns out I had a float variable named cv, and after renaming it to something else, the Image Watch started working again.
  • operator usage example
    1 Posts | Last post Fri 2:15 PM
    • Hi guys,
      
      could you give me a code snippet to explain, how to use and where to place an operator? I would like to use @mem operator to display image from memory:
      
      class RawImage
      {
      public:
      	RawImage(const unsigned char* data, int size, int width, int 
      	~RawImage();
      
      private:
      	unsigned char* data;
      	int size;
      	int width;
      	int height;
      };
      
      I tried this .natvis (snippet):
      
        <Type Name="RawImage">
          <Expand>
            <Synthetic Name="[type]">
              <DisplayString>UINT8</DisplayString>
            </Synthetic>
            <Synthetic Name="[channels]">
              <DisplayString>RGB8Packed</DisplayString>
            </Synthetic>	  
            <Item Name="[width]">width</Item>
            <Item Name="[height]">height</Item>
            <Item Name="[data]">data</Item>
          </Expand>
        </Type>
      
      however, this is evaluated as "invalid image".
      Thanks a lot!
  • "Zoom to Original Size" shows slightly resized image
    1 Posts | Last post Thu 2:10 PM
    • I would expect "Zoom to Original Size" would show the image on the screen pixel perfectly, but I found that's not always the case which can be misleading.
      
      An example: I'm viewing a 11x16 image in "original size":
      http://i.imgur.com/qR2q7o7.png
      Zoomed in version: http://i.imgur.com/z5QfX4T.png
      If you look closely, you can see there are some grey (not purely black or white) pixels. On the original image, there are only black and white pixels, see:
      http://i.imgur.com/HyJRRKg.png
      Also note, that the "Original size" image is 12x18 which is clearly not really the original size, but a slightly resized size of the image.
  • VS2015
    2 Posts | Last post Mon 7:00 PM
    • Hi,
      
      thanks for the great work! Do you have any estimate on when we can expect the VS2015 version?
      
      
    • Hi Miroslav,
      
      thank you! We should have the VS2015 version out in time for the Microsoft BUILD event (late April).
      
      Best,
      -Wolf
  • Working only with IplImage* and not with MAT
    3 Posts | Last post January 29, 2015
    • Hi,
      
      First let me say that this add on, is totally stunning, and a must for every developer in the image processing field :)
      
      Second I tried to install it with VS 2012, and interesting thing is that it is working, but only with variables like iplimage*, and not (funny...) with cv::Mat....
      What should I tune in order to make it operational with openCv2?
      
      ( I tried all the native code tune in the debugger, tried #prgama unmanged, and tried to attach to process... all those thing didn't work.)
      
      I still see in the debugger when pressing on the cv::Mat the :
      rows, cols and not width height.)
      
      Funny thing is that Native viewer work fine with those variables.
      
      Any idea ? 
      
      And thanks again for amazing tool.
      
    • Hi ODPR,
      
      thanks very much for your feedback! 
      
      It is curious that IPL images work fine and cv::Mat objects don't--I haven't seen that before. 
      
      The fact that you see "cols" and not "width" means that Visual Studio doesn't pick up the natvis definition only for cv::Mat. 
      
      One possibility is that the Native Viewer extension defines its own visualizer for cv::Mat which interferes with Image Watch. Have you tried uninstalling Native Viewer? If you try this, double check you have no cv::Mat related entries in your autoexp.dat file after uninstalling(https://msdn.microsoft.com/en-us/library/zf0e8s14.aspx)
      
      Let me know if that helps.
      
      Best,
      -Wolf
      
      
    • Hi Wolf,
      Thanks for the answer,
      your idea seems logical, however, I can't find anywhere how to uninstall native viewer.
      I tried to remove manually the line that native viewer install in the autoexp.dat, but still it works in the debugger ( so probably there is some other hidden places that it put files.).
      Any idea how to uninstall Native Viewer?
      
      Thanks
      Op
      
  • Pixel strides
    2 Posts | Last post January 28, 2015
    • Dear Wolf,
      
      the @band operator allows me to display individual channels of an image. I am not sure whether you do internally copy in that case, or whether you already have a pixel stride for this operator. If there were a pixel stride available, it would be very useful to be able to expose it publicly. Do you think that would be possible.
      
      It would allow to display types resembling view's to image channels. It might also improve the support for some rare cv::Mat types since these already support strides for each dimension internally.
      
      Thanks again for your great work,
      Hauke
      
      p.s. Is there any way to help contribute to Image Watch besides posting visualizers (as I did e.g. in March 2013 for ITK)? I mean contributing on the implementation side?
    • Hi Hauke,
      
      thanks for your great suggestion. Yes, pixels strides would be useful.. Right now the @band operator assumes that the offset between two pixels within a channel is completely determined by the pixel format. This offset is used when copying/converting the selected band into an RGB image for display in the Visual Studio IDE.
      
      Regarding contributions please PM me at [name of this extension]@live.com.
      
      Best,
      -Wolf
  • Proposal for 'slice' operator
    1 Posts | Last post January 23, 2015
    • Dear Wolf,
      
      you already offer an @band operator. Since more and more people (esp. from the medical domain) are working with 3D images these days and I was wondering whether you could add an @slice operator.
      Today, I can mimic the behavior by using @mem but that is a little bit cumbersome.
      
      Regards, Hauke
  • VS 2015
    3 Posts | Last post December 21, 2014
    • Dear Wolf,
      
      When can we expect Image Watch for Visual Studio 2015 (Preview)? :-) Looking forward to it, so I can start using the updated 2015 compiler and STL.
      
      Thank you very much for Image Watch, and even more for making it available for free. It's THE most amazing tool ever. Ever! It makes coding in C++ surpass Matlab, and increases productivity (and fun) by an uncountable amount.
      
      Cheers :)
    • Hi Elador, 
      
      thanks so much for your feedback! The 2015 update should be out very soon :)
      
      Best,
      -Wolf
    • Hi Wolf,
      
      Awesome to hear that a VS2015 update is coming very soon! It's the last bit missing to do the switch ;-)
      
      Thank you for your reply! Keep up the awesome work!
      
      Cheers
  • VS 2013 update 2 compatibility
    3 Posts | Last post December 04, 2014
    • Hello,
      
      extension does not install on VS 2013 update 2
      
      full VS spec: http://pastebin.com/8hrmT39j
      
      It did install for VS 2012 though - VS 2013 was simply not detected
      
    • Hmm .. have you tried installing any other extensions?
    • Hey,
      
      a little necro, but I've just came back to this problem and found solution.
      As I said ealier (quite unprecisely) downloading installer from website and running it with Microsoft Visual Studio Version Selector did't work.
      Installing it via plugin manager in VS did work though.
      
      @Wolf, yes, I've plenty of plugins installed, like UnityVS Tools or Nvidia's CUDA. Not sure if it matters anymore though :)
      
      Have a nice day folks
  • Negative Strides
    5 Posts | Last post December 02, 2014
    • First of all: Thank you for this great Extension!
      
      I noticed that i have problems displaying images with negative strides. Are they not supported or do i have to take some special steps for image watch to recognize negative strides?
      
      Regards
    • Thanks a lot for your feedback! 
      
      You are right, negative strides are not supported at this point. One possible workaround is to calculate the address of the first pixel row in the natvis file and then pretend the image has a positive stride. Note that you can do basic math in the natvis:
      
      <Item Name="[data]">m_lastRowPtr - ((m_numRows-1) * m_stride)</Item>
      
      Your image will be displayed upside-down, of course, but that could still be valuable for many debugging scenarios. Also, if you do need to see the image in its correct orientation you can use the @flipv operator in Image Watch's watch list (see Image Watch documentation, "Image Operators").
      
      -Wolf
    • Hi Wolf,
      
      thank you very much for your suggestions.
      
      I got that working! 
      However: I can have both positive and negative strides in one image type. I tried to check if my stride is "> 0" or "< 0" but i can´t find a statement that is valid in natvis syntax and i cant find a documentation. 
      Do you know where the syntax and valid operators are described? 
      I found a lot of Examples using equal and not equal but none using other comparisons.
      
      Regards
      
    • I worked around this problem by using Bit shift operations: 
      
      Check if number is negative: (ystride >> (sizeof(int) * 8 - 1)) == -1
      
    • As Y-Strides are working fine i just hit the next problem. Some of the images i need to support also have X-Strides. Is there any plan to support these in futures versions?
      
      Regards
      
1 - 10 of 73 Items