OpenCV dll-call tracer - opencv

Once I was in need to understand a not documented USB-device (the supplier went bankrupt) I've written a wrapper for FTDI-dll which has traced all the calls with all the data passing in and out.
Now I wonder is there anything similar for OpenCV? Are there wrapper dlls for OpenCV which log all API-calls?
Of course, one could modify code and log all the calls, but is there an option built in OpenCV already?
Thank you for any hint!

Related

Convert pcl xyzrgb(a) point cloud to images from different angles of the cloud

I would like to generate images from my point cloud (Kinect) from different angles, but the only function to take snapshots seems to require an open Viewer (open Window) and saves the images to a file. I would like to process them later and show them in a custom viewer, so storing in RAM is necessary.
Is the point cloud library providing such a method? Or does anybody knows how the approach with pcl would look like?
My second approach is to use opencv mats. Then use the projectPoints method for the projection, but this works on xyz-coordinates not xyzrgb(a) and I will loose the information which color from the pointcloud point belongs to the new projected image.
I stuck a little bit here :( and hope you can help me :)
Many thanks
Greetings
Carlo
I don't believe there is a way to do that using PCL functions. However PCL uses VTK to build it's viewer and I believe you would be able to do what you're talking about by using VTK functionality, though it's likely going to be more complicated. This article might be a good start.

OpenNI and OpenCV

I am implementing an algorithm for finger detection using OpenNI and OpenCv 2.4 and Kinect.
The problem is I don't know how to get started, I found a piece of code and trying to run it.
But the problem is imgproc_c.h has alot of errors as (undeclared CvMoments,CvDistanceFunction) and many others of this type.
I checked and made sure of the header files, I even compared it with the code online of imgproc_c.h and it's exactly the same.
I have a feeling that openCV 2.4 is not functioning correctly in my case,
Any clue ?
If you don't know where to start I sugest you start reading "Computer Vision" from Ballard and Brown, old but gold, it's free: http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/bandb.htm
I can assure you that there are several ways to make a finger detection, but never one really simple.

Skeletonization in opencv

Is there any specific function that can be used in opencv for skeletonization? Besides, i searched for some time and want to know if opencv implements voronoi-skeleton (seems like there is but is it really are)?
It looks like Voronoi-Skeleton is implemented in the _cvConstructSkeleton() and _cvLee() functions in opencv/src/cvaux/cvlee.cpp.
I haven't seen any official documentation about how to use this functionality in OpenCV. Since cvlee.cpp is in the cvaux folder, I think these may be experimental OpenCV functions.

Programming screen recorder - output issues

I want record screen (by capturing 15 screenshots per second). This part I know how to do. But I don't know how to write this to some popular video format. Best option which I found is write frames to separated PNG files and use commandline Mencoder which can convert them to many output formats. But maybe someone have another idea?
Requirements:
Must be multi-platform solutions (I'm using Free Pascal / Lazarus). Windows, Linux, MacOS
Exists some librarys for that?
Could be complex commandline application which record screen for me too, but I must have possibility to edit frames before converting whole raw data to popular video format
All materials which could give me some idea are appreciated. API, librarys, anything even in other languages than FPC (I would try rewrite it or find some equivalent)
I considered also writting frames to video RAW format and then use Mencoder (he can handle it) or other solution, but can't find any API/doc for video RAW data
Regards
Argalatyr mentioned ffmpeg already.
There are two ways that you can get that to work:
By spawning an new process. All you have to do is prepare the right input (could be a series of jpeg images for example), and the right commandline parameters. After that you just call ffmpeg.exe and wait for it to finish.
ffmpeg makes use of some dll's that do the actual work. You can use those dll's directly from within your Delphi application. It's a bit more work, because it's more low-level, but in the end it'll give you a finer control over what happens, and what you show the user while you're processing.
Here are some solutions to check out:
FFVCL Commercial. Actually looks quite good, but I was too greedy to spend money on this.
Open Source Delphi headers for FFMpeg. I've tried it, but I never managed to get it to work.
I ended up pulling the DLL wrappers from an open source karaoke program (UltraStar Deluxe). I had to remove some dependencies, but in the end it worked like a charm. The relevant (pascal) code can be found here:
http://ultrastardx.svn.sourceforge.net/viewvc/ultrastardx/trunk/src/lib/ffmpeg-0.10/
There was some earlier discussion with a Delphi component here. It's a very simple component that sometimes generates some weird movies. Maybe a start.

Partial forking of OpenCV

I am currently developing an image processing application using OpenCV's cxcore as the basic structure (Matrix class and the their functions are very convenient). However, I don't really use the image processing capabilities provided by OpenCV (cv and cvaux). All I need is the cxcore module, and some highgui for debugging purpose.
Is it possible to fork openCV's cxcore into my own project, legally and technically? Have anyone ever done this before? My intention is to have my application be able to be compiled in any system without having to install openCV as an intermediate step.
Thanks :-) ,
Andree
P.S.: I have posted the same question in OpenCV's mailing list.
Since OpenCV is licensed with BSD license, you should be able to do anything to the code, even regardless of whether your application is proprietary or free software. Anything includes using only part of that code in your application.
That being said, sharing won't hurt you and it's nice and polite :)

Resources