Ask Your Question

klinkenstein's profile - activity

2017-05-17 12:43:19 -0500 commented question Algorithm for lining contour boundaries in Mean Shift

There is no white line yet. For example, this is the result:

I want to draw a line the between the segments.

2017-05-17 09:00:48 -0500 commented answer Color edges with Canny Algorithm

Thank you!

2017-05-17 06:05:27 -0500 received badge  Editor (source)
2017-05-17 04:34:58 -0500 commented question Color edges with Canny Algorithm

I do, but they get converted into greyscale images.

2017-05-17 04:26:35 -0500 asked a question Algorithm for lining contour boundaries in Mean Shift

I am using the Mean Shift Algorithm for segmentation. To better the result image I would like to draw a white line in the contour boundaries. What algorithm fits this requirement and is there a code example in C++?

2017-05-17 04:26:34 -0500 asked a question Color edges with Canny Algorithm

I'm using the Canny Edge Detector with the code from the example on opencv documentary (

There are edges with white pixel in the result, but also color pixel depending on the original image. Why isn't the result image not only a greyscale image? When are the color edges used and when are only white pixel given back. I understand the approach from the sobel operator and the following act of the canny algorithm. But I can explain why there are color lines in the result image. Could somebody help me out there?

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>

using namespace cv;

/// Global variables

Mat src, src_gray;
Mat dst, detected_edges;

int edgeThresh = 1;
int lowThreshold;
int const max_lowThreshold = 100;
int ratio = 3;
int kernel_size = 3;
char* window_name = "Edge Map";

 * @function CannyThreshold
 * @brief Trackbar callback - Canny thresholds input with a ratio 1:3
void CannyThreshold(int, void*)
  /// Reduce noise with a kernel 3x3
  blur( src_gray, detected_edges, Size(3,3) );

  /// Canny detector
  Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );

  /// Using Canny's output as a mask, we display our result
  dst = Scalar::all(0);

  src.copyTo( dst, detected_edges);
  imshow( window_name, dst );

/** @function main */
int main( int argc, char** argv )
  /// Load an image
  src = imread( argv[1] );

  if( ! )
  { return -1; }

  /// Create a matrix of the same type and size as src (for dst)
  dst.create( src.size(), src.type() );

  /// Convert the image to grayscale
  cvtColor( src, src_gray, CV_BGR2GRAY );

  /// Create a window
  namedWindow( window_name, CV_WINDOW_AUTOSIZE );

  /// Create a Trackbar for user to enter threshold
  createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );

  /// Show the image
  CannyThreshold(0, 0);

  /// Wait until user exit program by pressing a key

  return 0;