Nov 11, 2023

Calling C++ class methods by its string name

Consider the following cases:
  1. You have an abstract class that you use as an interface for other classes deriving from it. The abstract class just have the bare minimum methods for interacting with it or none at all, derived classes can define new methods, you can only get access to the derived class object by the abstract class. You want to call a method in the derived class from the abstract class.
  2. You have a class where you want to add new methods dynamically, but it's definitions are unknown.

Aug 16, 2016

Otsu threshold

Previously, in my post about Canny edge detector, we had seen that one of the required steps for obtaining perfectly thinned edges was thresholding, in the source code example for that post I've used an arbitrary good enough value for the thersholds. In this post I'll show you an algorithmic way of obtaining all thresholds for a given number of gray levels output, based on the Otsu's method.

Feb 25, 2016

Webcamoid 7.0.0 released

Finally, a new release of Webcamoid arrived! Let me show you what new features it has to offer, and what the future holds.

Dec 29, 2015

Disable Volume and Brightness OSD in KDE


A few days ago Arch linux team decided to dropout support for KDE 4, and force their users to upgrade to KDE Plasma 5. I've tested Plasma 5 around 10 months ago and, to be honest, my experience was not good, Plasma 5 suffered a lot of stability problems, but the problem that most annoyed me was the backlight OSD thing, i've even reported and suggested a patch for it but their developers ignored me and refused to fix this problem. So i had not option but to return to KDE 4.

Yesterday, i had not option but to try Plasma 5 again, and for my surprise (or not), the backlight OSD thing was not fixed, but also KMix is showing OSD again without option for disabling it, and it was supposed to have been fixed 3 years ago. A this point i don't know what KDE developers are thinking, it seems that their are trying to transform KDE into a Nagware. At least i know that i'm not alone because 3 months after my report, other user reported it again, and developers provided just a partial solution making the OSD smaller than before, but for me it was not ok and decided to get rid of the OSD annoyance once for all.

Aug 10, 2015

Canny edge detector

The Canny edge detector, unlike convolutional edge detection filters, produces clear and thin lines when applied to an image.
The algorithm consists of four steps:
  1. Filter edges using a convolutional filter.
  2. Thin edges depending on it's gradient and direction.
  3. Threshold the image so all pixels where it's gradient is below a minimum threshold becomes black, all pixels where it's gradient is above a maximum threshold becomes white, and the rest becomes gray.
  4. Trace the edges so all gray pixels connected to white becomes white, and the rest becomes black.

Aug 6, 2015

Convolutional edge detection filters design

In this post I want to talk about edge detection filters, that are a type of convolution filters, this filters are widely used in features classification algorithms. I will show you all the theory beside edge detection and how to tweak the parameters to match your needs.

Jul 26, 2015

Denoise filters: Median

Gauss and Mean filters required a good knowledge of mathematics to understand its background. Median filter is very similar to both of them, but it based in a more logical approach than a mathematical one.

Jul 21, 2015

Denoise filters: Mean

Continuing with article series about the denoise filters, we had seen that the Gauss filter had a very high sensitivity to noise due to it's static nature. Now is time to analyze a dynamic denoise filter based in the arithmetic mean of the input pixels, this is called the Mean Denoise Filter. This filter adapts it's convolution kernel according to the values of the input pixels.

Jul 17, 2015

Denoise filters: Gauss

We have seen before about convolution filters, and at the end of that article we have seen a kernel used for removing noise in an image, that is random spurious pixels in a image, the process of removing that random pixels is called Denoise. In this case I will show you the general form of the denoising kernel based in gaussian distribution.

Jul 8, 2015

Integral image and image blur

In this post I will show you an image processing technique that provides a great boost to algorithms that requires the summation of a large number of pixels, this technique is called integral image, also known as Summed Area Table (SAT). Additionally, I will show you an algorithm used to blur an image that take advantage of the integral image.

Jun 30, 2015

Image convolution

In this post I want explain a one of the most common and simple algorithm used in image processing. I will give a very basic introduction to its mathematical formulation, the source code in C++/Qt, and a some output examples.

Jun 27, 2015

Webcamoid 6.1.0 ready, what next?

5 months passed after the last release, in this post I want to explain why Webcamoid's development is going such slow, and what features I are planned for the next releases.

Download Webcamoid 6.1.0

Feb 5, 2015

Webcamoid for Windows is almost complete

A few days after my last post, I made all necessary changes to make Webcamoid works in Windows. So basically, Webcamoid is the first Free Open Source and multiplatform webcam suite, true fact :)

Jan 27, 2015

Webcamoid 6.0.0, How it will look like?

Four months has passed since the last post, so, what is the current development status of Webcamoid 6.x series? Well it looks this:

Oct 1, 2014

Released Webcamoid 5.1.0 and going to the next step.

Yesterday, I've released Webcamoid 5.1.0. This release includes many improvements and changes, the most important changes are:
  • From now on, Webcamod will be developed using Qt5. Qt4 can be considered as an obsolete technology.
  • Dependency reduction. This makes the program easy to port to many platforms with minimal effort, reduces the bugs caused by 3rd-party libraries, and reduces the disk usage.
  • Webcamoid born as a KDE plasmoid, but since KDE is in transition from Qt4 to Qt5, and Qt5 plugins aren't compatible with Qt4, I must remove the plasmoid. The development and survival of Webcamoid is a priority.
  • Webcamoid for Windows is near. Only a few patches are needed. This is necessary because Webcamoid adoption in GNU/Linux is not going so well (people seems not to be interested and I don't know why), and this strategy can give a boost to the project.
And now let's see what comes for the next release (Webcamoid 6.0.0).

Jul 18, 2014

Compile QXmpp in Windows with full support

People keep asking me about how to compile my VoipTest example in Windows, even when they know I'm GNU/Linux only guy. Many people complains that they can hear the audio in VoipTest, but they doesn't receives the video signal, this occurs because they doesn't not compiles QXmpp with Speex, Opus, Theora and Vpx codecs.
So, in this post I will teach you how to compile QXmpp with full codec support in Windows :)

Jul 17, 2014

Camicri Cube: Descarga de paquetes offline para Debian, Ubuntu y Mint

Cada tanto me llega alguna consulta a mi mail preguntándome sobre Sushi, huh?, muchas veces me preguntan por algún bug que quedó remanente. El problema es que en estos momentos estoy muy ocupado con el desarrollo Webcamoid y proyectos similares, y con el poco tiempo que tengo disponible, no puedo dedicarle tiempo a un proyecto minoritario.

Así que aquí les presento un programa para todos aquellos que necesitan descargar paquetes para sus distribuciones.

Jun 24, 2014

Code highlight module

We continue adding new modules to our blog using the dynamic loader. This time, we will add a very useful module for people who needs to show source code in their posts. The following module will allow you to use the Alex Gorbatchev's SyntaxHighlighter.

Using smileys in your blog (Blogger)

In the previous post (yeah, I know, very long time since that post, but I've been very busy), here is the code for embedding some nice smileys in your blog.

Dec 7, 2013

Loading blog modules dynamically

I just want to share a little trick that I have applied to my blog a few days ago. If you have a blog like mine, in which you talk about everything, and maybe in some of the posts you need to use a code highlighter, a math or graphics renderer, or any other kind of scrpt, but in other posts you don't need them at all, maybe you noticed for sure that loading that scripts from beginning in every page that your readers visits in your website, will slow down the page charging, and therefore will degrade the user experience in your website.
So, my idea is to load only the scripts that I need, and enable or disable them with a few minimal code. This trick can be applied to any kind of template of Blogger because the following code doesn't requires to modify it.