Two weeks ago I started a new project, it’s called Qt-Cuda. As the name suggests it combines the Qt-Framework with Cuda-enabled algorithms. Algorithms for computer-vision to be precise.
Qt will only be used for the graphical interface and delegates most computations to backend-libraries, e.g. openCV, PCL and self-written ones.
Why self-written?
I hear you screaming: Why do he reinvent the wheel, when he is still using openCV? This is because I want to train implementing some basic image filters which I’ve learned during my image processing lecture. And the self-written implementations will be limited to simple filters like gaussian-blur, sobel operations, historgram calculations (histogram building/equalization) and so on. Later I will cover algorithms like feature-tracking and 3D-reconstruction. These will be implemented under heavy usage of openCV and PCL
Currently there are only basic operations implemented like loading, displaying, rotating and zooming pictures.
Current TODOs
- Actually I’m occupied by conversioning (image-)data from its internal representation from openCV’s IplImage to Qt’s QImage and vise versa. The image-display maybe will be reimplemented using QtOpenGL someday.
- Implementing basic histogramm operations (calculation, equalization, thresholding)
- System quering, if actual configuration is capable to run Cuda enabled code
- Interface tweaks
- Implementing widgets to use within a toolbox
- Layout optimization
- Mouse support for QGraphicsView, e.g. mouse-wheel events
- Reimplementing QWidget for displaying neat histogramm charts
Screenshot
Nothing special, but a small description.
On the right-hand side you can see a QDockWidget containing some QPushButtons for loading, rotating and zooming the image. On the left-hand side a QGraphicsView loads a QPixmap to display the image.
Where can you find it?
If you are interested you can take a look at my Github repository. I’m using Qt-Creator and this is the recommended way if you want to build the source code. There is a Qt project file included which will take care of all neccessary things.
All other build-dependencies are explained in the project’s readme file.
Feel free to contact me if you have any suggestions or improvements.