Using OpenCV ANN MLP to Train a Model on Iris Flower Dataset

Even though OpenCV is mainly a Computer Vision Library, it still contains a large set of very powerful mathematical functions, optimization algorithms and even GUI utilities that can be useful in other applications as well. Besides the fact that it’s open source and has a very permissive license, the emphasis on speed and performance which has always been the main goal of OpenCV, makes it even more appealing for commercial grade applications. That was my main motivation behind writing this post, and I want to walk you through it with a classical machine learning example, that is training a multilayer perceptron to classify Iris Flower Dataset entries.

Continue reading “Using OpenCV ANN MLP to Train a Model on Iris Flower Dataset”

Creating a Pure C++11 Generic Timer Class

One thing I noticed while searching for a simple, generic and pure C++ Timer class online, was the huge amount of answers that were floating around and none of them fit the exact description I was looking for. As a Qt Framework user I wanted to have something as close to QTimer as possible, or maybe even something like Timer class in .NET Framework and C# language. Well, I ended up writing one myself using what I could gather and this post is the summary of it all.

Continue reading “Creating a Pure C++11 Generic Timer Class”

Implementing Minimize To Tray Functionality Using Qt/C++

I wanted to create my own personal stand-alone YouTube Player with Minimize to System Tray functionality. In other words I wanted it to be minimized to the System Tray when I closed it and displayed again when I clicked its icon in System Tray. I actually did it the other day and the whole thing led to this post. So, in this post I’ll describe How to use Qt/C++ to create your own YouTube Player with Minimize to Tray functionality in less than 10 minutes.

Continue reading “Implementing Minimize To Tray Functionality Using Qt/C++”

How to Use OpenCV in Unity for Android

If you’ve read my previous articles (especially this one) about how to use OpenCV in Unity and how to pass images between them, this post will feel like a breeze and you can just quickly skim through it. However, if you haven’t, I recommend doing so because in this post I’ll describe how to create an Android library that uses the OpenCV library and then include it in your Unity project, or in other words describe what we did in Unity for Windows this time in Unity for Android.

Continue reading “How to Use OpenCV in Unity for Android”

How to Pass Images Between OpenCV and Unity

A question I got a lot after writing this post quite some time ago was “How to pass a processed image from OpenCV back to Unity?!” Obviously, that tutorial described just the way to pass images from Unity to C# (because of the nature of what it needed to do) and my answers in the comments section didn’t quite clarify things for most people, so I thought why not write another tutorial and address all those questions in one go. This article is the result, so I hope it helps you understand not just how images are passed from Unity to OpenCV and vice versa, but also why it needs to be done like this.

Continue reading “How to Pass Images Between OpenCV and Unity”

How to Use DPAPI with Qt Framework to Encrypt and Decrypt Data

When dealing with data encryption and decryption in Windows operating systems, probably one of the best choices is to use the Data Protection API. In this post I’ll be sharing two simple functions that can be used to encrypt and decrypt data (such as passwords, recovery keys and so on) that you want to store in an easy, quick and highly protected manner. Needless to say, these functions can be used with C++ and Qt Framework.

Continue reading “How to Use DPAPI with Qt Framework to Encrypt and Decrypt Data”

How to Convert Videos Using Qt and FFmpeg

In this post I’m going to describe how you can use FFmpeg library to convert videos in your Qt applications, or even write a Video Conversion program that uses FFmpeg as its underlying powerful conversion engine.

Unfortunately you can’t use Qt Framework out-of-the-box to convert video files and formats to each other (at least that is the case until the time this post was published, or in other words until Qt5.10.1). One of the most practical workarounds for this missing capability is using 3rd party video conversion libraries and tools such as FFmpeg.

Continue reading “How to Convert Videos Using Qt and FFmpeg”

How to Create an Image Classifier Using Qt, OpenCV and TensorFlow

[Updated this post on April 04, 2019, to make sure this tutorial is compatible with OpenCV 4.x and TensorFlow 2.0]

In this post we’re going to learn how to create an image classifier application with a proper GUI that allows the users to choose a camera or a video file as the input and classify the incoming images (video or camera frames) in real time. We’ll be using the power of Qt for cross-platform GUI creation and anything related to visualizing the output and allowing a seamless experience for the user. We’ll also be using TensorFlow and OpenCV to handle the actual classification task, along with accessing cameras and video files.


With the more recent versions of OpenCV, a new module was introduced for handling Deep Learning problems, which is getting better and better by each release. This module is called “dnn” and I recommend getting the latest version of OpenCV (3.4.1 at the time of writing this article) to make sure you face no issues at all (or less issues if any). Using this new module, we can load and use deep learning models from popular 3rd party libraries such as TensorFlow, Caffe, DarkNet and so on. In our example project we’ll use pre-trained TensorFlow models, namely ssd_mobilenet_v1_coco, however, you can easily use other models too if you get a firm grasp on all of the information provided here.

Continue reading “How to Create an Image Classifier Using Qt, OpenCV and TensorFlow”