Ask Your Question

Soltius's profile - activity

2017-01-09 03:20:22 -0600 commented answer Making image noise free

Based on the result you show after closing, you could then select only components above a certain size (with connectedComponents) to keep only the hand

2017-01-03 02:23:50 -0600 commented answer Is there any enthusiasm for making point releases 3.1.1?

3.2 is available since a few days ago, in the nick of time ;)

2016-12-23 02:24:29 -0600 received badge  Enthusiast
2016-12-19 07:00:32 -0600 received badge  Nice Answer (source)
2016-12-19 06:23:25 -0600 received badge  Teacher (source)
2016-12-19 05:29:03 -0600 received badge  Necromancer (source)
2016-12-19 05:20:35 -0600 answered a question Is it possible to draw half circle?

Great answer ! Just a small addition since the question was asked for Python, in case any Python user come by (also, this is a full working example)

import cv2
import numpy

img=numpy.zeros((100,100))

radius=5
axes = (radius,radius)
angle=0;
startAngle=0;
endAngle=180;
center=(50,50)
color=255

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color)
2016-12-15 04:24:42 -0600 received badge  Supporter (source)
2016-12-13 03:47:32 -0600 commented question Getting Canny to provide good results

Ok, thanks for everything !

2016-12-13 03:28:42 -0600 commented question Getting Canny to provide good results

Thanks for the fast answer ! But in your example, what part of the code specifies to the program to use the "second" Canny ? This may be my inexperience in C++ talking... I'm using Python, and by the way your Python equivalent example uses the "normal" Canny (maybe it is not possible in Python ?)

2016-12-13 03:11:47 -0600 commented question Getting Canny to provide good results

Thank you both for your input. LBerger, glad to know that I'm not completely misusing Canny. matman, I was not aware of the existence of this overload, I want to give it a try. However, I can't figure out how to call it from my code, as Canny() calls the "normal" Canny function (this is probably a newbie problem, sorry...)

2016-12-12 12:13:40 -0600 received badge  Student (source)
2016-12-12 11:37:54 -0600 asked a question Getting Canny to provide good results

Hello everyone, I am working on edge detection. I have been developing under ImageJ for a while and converted most of my code to OpenCV in the past few weeks. Most of this process happened painlessly, however I cannot get the Canny filter to work in OpenCV as it did in ImageJ.

Here is an example of image I work with (left), results with ImageJ (middle) and results with OpenCV (right). Hysteresis thresholds were set about the same.

image description

I have been searching for why such differences in results occur. I found that for ImageJ, the Canny algorithm uses a convolution mask which combines a gaussian function and a sobel kernel, thus computing gradients on a smoothed image.

OpenCV's Canny only uses a Sobel Kernel I believe, but since the Gaussian and Sobel are linear, I should get the same results by gaussing the original image beforehand and then applying Canny. But it is not the case.

One main difference is that ImageJ's kernel size for its convolution mask is 16 (and not modifiable), while OpenCv's one is 3,5 or 7 (results are shown for kernel 7), and this parameter seems to have a big impact on results.

Do you think it is the reason why I have so different results ? If so, how can I get around it ?

Thanks.

PS : Things I tried : playing with hysteresis thresholds, morphological operations post Canny, but I would like as good results as ImageJ