GUI for Interactive Visual Debugging of Computer Vision Programs#

Detailed Description#

Namespace for all functions is cvv, i.e. cvv::showImage().

Compilation:

  • For development, i.e. for cvv GUI to show up, compile your code using cvv with g++ -DCVVISUAL_DEBUGMODE*.

  • For release, i.e. cvv calls doing nothing, compile your code without above flag.

See cvv tutorial for a commented example application using cvv.

Namespaces#

Classes#

Name

Description

class cvv::FinalShowCaller

RAII-class to call finalShow() in it’s dtor.

Function Documentation#

debugDMatch()#

static void cvv::debugDMatch(
cv::InputArray img1,
std::vector< cv::KeyPoint > keypoints1,
cv::InputArray img2,
std::vector< cv::KeyPoint > keypoints2,
std::vector< cv::DMatch > matches,
const impl::CallMetaData & data,
const char * description = nullptr,
const char * view = nullptr,
bool useTrainDescriptor = true )

#include <opencv2/cvv/dmatch.hpp>

Add a filled in DMatch to debug GUI.

The matches can are visualized for interactive inspection in different GUI views (one similar to an interactive :draw_matches:drawMatches<>).

Parameters

  • img1 — First image used in DMatch .

  • keypoints1 — Keypoints of first image.

  • img2 — Second image used in DMatch.

  • keypoints2 — Keypoints of second image.

  • matches

  • data — See showImage

  • description — See showImage

  • view — See showImage

  • useTrainDescriptor — Use DMatch ’s train descriptor index instead of query descriptor index.

Here is the call graph for this function:

cvv::debugDMatch Node1 cvv::debugDMatch Node2 cvv::impl::debugDMatch Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

cvv::debugDMatch Node1 cvv::debugDMatch Node2 cvv::impl::debugDMatch Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

debugDMatch()#

static void cvv::debugDMatch(
cv::InputArray img1,
std::vector< cv::KeyPoint > keypoints1,
cv::InputArray img2,
std::vector< cv::KeyPoint > keypoints2,
std::vector< cv::DMatch > matches,
const impl::CallMetaData & data,
const std::string & description,
const std::string & view,
bool useTrainDescriptor = true )

#include <opencv2/cvv/dmatch.hpp>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Here is the call graph for this function:

cvv::debugDMatch Node1 cvv::debugDMatch Node2 cvv::impl::debugDMatch Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

cvv::debugDMatch Node1 cvv::debugDMatch Node2 cvv::impl::debugDMatch Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

debugFilter()#

static void cvv::debugFilter(
cv::InputArray original,
cv::InputArray result,
impl::CallMetaData metaData,
const ::std::string & description,
const ::std::string & view = “” )

#include <opencv2/cvv/filter.hpp>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Here is the call graph for this function:

cvv::debugFilter Node1 cvv::debugFilter Node2 cvv::impl::debugFilter Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

cvv::debugFilter Node1 cvv::debugFilter Node2 cvv::impl::debugFilter Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

debugFilter()#

static void cvv::debugFilter(
cv::InputArray original,
cv::InputArray result,
impl::CallMetaData metaData = impl::CallMetaData(),
const char * description = nullptr,
const char * view = nullptr )

#include <opencv2/cvv/filter.hpp>

Use the debug-framework to compare two images (from which the second is intended to be the result of a filter applied to the first).

Here is the call graph for this function:

cvv::debugFilter Node1 cvv::debugFilter Node2 cvv::impl::debugFilter Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

cvv::debugFilter Node1 cvv::debugFilter Node2 cvv::impl::debugFilter Node1->Node2 Node3 cvv::debugMode Node1->Node3 Node4 cvv::impl::getDebugFlag Node3->Node4

debugMode()#

static bool cvv::debugMode()

#include <opencv2/cvv/debug_mode.hpp>

Returns whether debug-mode is active for this TU and thread.

Here is the call graph for this function:

cvv::debugMode Node1 cvv::debugMode Node2 cvv::impl::getDebugFlag Node1->Node2

cvv::debugMode Node1 cvv::debugMode Node2 cvv::impl::getDebugFlag Node1->Node2

finalShow()#

void cvv::finalShow()

#include <opencv2/cvv/final_show.hpp>

Passes the control to the debug-window for a last time.

This function must be called once after all cvv calls if any. As an alternative create an instance of FinalShowCaller, which calls finalShow() in its destructor (RAII-style).

Here is the call graph for this function:

cvv::finalShow Node1 cvv::finalShow Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::finalShow Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3

cvv::finalShow Node1 cvv::finalShow Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::finalShow Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3

setDebugFlag()#

static void cvv::setDebugFlag(bool active)

#include <opencv2/cvv/debug_mode.hpp>

Enable or disable cvv for current translation unit and thread.

(disabled this way has higher - but still low - overhead compared to using the compile flags).

Parameters

  • active

Here is the call graph for this function:

cvv::setDebugFlag Node1 cvv::setDebugFlag Node2 cvv::impl::getDebugFlag Node1->Node2

cvv::setDebugFlag Node1 cvv::setDebugFlag Node2 cvv::impl::getDebugFlag Node1->Node2

showImage()#

static void cvv::showImage(
cv::InputArray img,
impl::CallMetaData metaData,
const ::std::string & description,
const ::std::string & view = “” )

#include <opencv2/cvv/show_image.hpp>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Here is the call graph for this function:

cvv::showImage Node1 cvv::showImage Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::showImage Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3

cvv::showImage Node1 cvv::showImage Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::showImage Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3

showImage()#

static void cvv::showImage(
cv::InputArray img,
impl::CallMetaData metaData = impl::CallMetaData(),
const char * description = nullptr,
const char * view = nullptr )

#include <opencv2/cvv/show_image.hpp>

Add a single image to debug GUI (similar to imshow <>).

Parameters

  • img — Image to show in debug GUI.

  • metaData — Properly initialized CallMetaData struct, i.e. information about file, line and function name for GUI. Use CVVISUAL_LOCATION macro.

  • description — Human readable description to provide context to image.

  • view — Preselect view that will be used to visualize this image in GUI. Other views can still be selected in GUI later on.

Here is the call graph for this function:

cvv::showImage Node1 cvv::showImage Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::showImage Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3

cvv::showImage Node1 cvv::showImage Node2 cvv::debugMode Node1->Node2 Node4 cvv::impl::showImage Node1->Node4 Node3 cvv::impl::getDebugFlag Node2->Node3