Which video library is OpenCV using under the hood on linux? [closed] - c++

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm writing a simple software to capture and record webcam images to a compressed video file. I'm using OpenCV "VideoCapture read(frame)" and "VideoWriter write(frame)" in a C++ software.
I'm on Ubuntu 14.04 LTS operating system.
I would like to know which library OpenCV is using under the hood.
Is it ffmpeg or gstreamer or V4L2 or its own low level source code ?
It seems to be changing depending of the OpenCV version I'm using. (Ex 2.4.1, 2.4.11, 3.x)
Can somebody give me a overview of what OpenCV is doing to decode/encode video ?
What is the typical path of the video data coming from the webcam up to my program in user space ?
What is the typical path of the video data coming from program up to the file system ?
Right now, this is confusing for me.

OpenCV uses ffmpeg
I don't know exactly where or how. I know it is used for reading and writing video files. I think it isn't used when getting images from a cam. I think it reads raw cam data, because it can set webcam properties.
Also, the "video" from the web cam isn't video, it is an image at the time the frame is capture. Capturing multiple images in order can be written to a video.
Getting video from a file, OpenCV grabes a frame at a time out of the stream.

Related

Recommendation of OCR software to face this recognition case [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 12 months ago.
Improve this question
I have to recognise text in a picture like this:
Image to recognise
I have tried Tesseract, but I am not very happy with the results.
Could you recommend me any software that could be more accurate in "text recognition on image" instead of "text recognition on document"?
Thanks in advance
Don't expect the Tesseract to work out of the box. This image needs some work before it is put to Tesseract.
I would do following preprocessing:
blur the image to remove some of the digital noise
adaptive thresholding with suitable parameters
correct image
colors to provide white background and black text
this should be easy operations just invert the colors if necessary
run Tesseract with correct language files (italian, I guess?)
These preprocessing steps are really easy to program by hand, but of course there is plenty of libs with this capabilities.
As a starting point see this: Preprocessing image for Tesseract OCR with OpenCV
I don't know of any ready made software that would do text extraction on your specific image without a lot of additional configurations, but you can probably improve your Tesseract results
You can try to treat the image so it's easier for Tesseract to recognize it, use tessedit_write_images true to see your image after Tesseract does it's automatic adjustments
It probably isn't the best so you can do the adjustments yourself with the many libraries/programs available, your goal should be to transform it to a black on white text image, with as little noise as possible
For this read: ImproveQuality
You can also try to train Tesseract for your specific data, but this will require a lot more work, and large amounts of training data, read: TrainingTesseract 4.0

Multiple View Stereo software recommendation [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 12 months ago.
Improve this question
I have a collection of camera images taken by 4 calibrated cameras mounted on a mobile robot moving in a static outdoor environment. In addition, I have information from a farely accurate OxTS RT3000 Inertial Navigation System (IMU + GPS).
I would like to combine these images to form a 3d model (point cloud) of the static environment. I know there are many Structure from Motion applications, but I would like to find some software/library that is able to make use of the odometry and calibration, at least as an initialization, and to produce a dense point cloud. (All of this is for offline recordings.)
Any suggestions?
Agisoft Photoscan does what you want. From their manual:
PhotoScan supports import of external and internal camera orientation parameters. Thus, if precise camera
data is available for the project, it is possible to load them into PhotoScan along with the photos, to be
used as initial information for 3D reconstruction job.
Taken from page 21 of http://www.agisoft.com/pdf/photoscan-pro_1_4_en.pdf
You may have to do some wrangling of data to get it into a supported format, but it's certainly possible. You'll probably want to use the local coordinate output of the OxTS IMU to go from lat/lon/alt to XYZ and save yourself the conversion. Be careful also to correct for the extrinsic parameters - the rotations and translations between the IMU navigation frame and the cameras.

Embedded 3d graphic engine with supporting Blender models [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm trying to develop desktop application. User can load 3d models from Blender with animation (simple object (move, rotate, etc) animation and NLA tracks) and interact with it (rotate model, zoom, click on different object, run animation).
Requirements:
Platforms: Windows, Linux.
High performance
Blender support.
Application's language: C++, C#, maybe another.
I know about Blend4Web (low performance for big model) and Ogre3d (tried to export scene from blender but in app see only black screen unfortunately). I will wonder if I miss something usefull.
Most Graphics Libraries can store files in the WaveFront obj format. libObj can parse and read this format. You should then be able to upload the models to OpenGL and perform the operations that you require.
For a framework to build your app look at GameKit
Using Ogre for graphics, Bullet for physics, OpenAL for sound
OgreKit is most actively developed
Engine is written in C++ and the game logic can be done in C++, Lua scripting or logic bricks
Reads all data from Blender .blend files, with future FBX import planned
Free from viral licenses: only using components using MIT/BSD/Zlib style licenses
CMake cross-platform build system support that works out-of-the-box, see http://cmake.org
Gamekit supports Windows and Mac OSX, Linux, Android and iPhone.
While it doesn't directly read blend files godot is a graphical game building application with python like scripting, it has a gui toolkit that can be used for non-game applications and they offer a blender addon for collada export that is meant to be better than the official one. Being open source you can also adjust it to your needs.

video file + fragment shader under Linux [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
coming from Windows (MSVC++ 2005):
What SDK or alike do you recommend to port an C++ application (DirectShow+Direct3D) to Linux playing video file + using fragment shaders?
is there any reason you need a fragment shader at all? (are you doing post processing on the video images?). You don't need to do any shader coding to get a video playing with OpenGL.
I would use ffmpeg (libavcodec actually) to do the video decoding. Displaying a frame just requires an OpenGL texture and a call to glTexSubImage2D each frame to do the update.
Using FFMPEG in C/C++
You need to use OpenGL instead.
Some tip for the implementation:
- To achieve a good performance you
need to make sure a good video card
driver is installed.
- If you are not familiar with OpenGL
start it with the 'Red book' - OpenGL
Programming Guide
- You may need to download the latest extension header from here
http://www.opengl.org/registry/
- The library GLEW may help you in
identifying the available
extension.
- Include the GL/gl.h and the glext.h file in your project
- Link to the driver's opengl dynamic library: /usr/lib64/libGL.so or simmilar
i would also check the gstreamer framework on linux if you need to port a more complicated directshow application. it also has some sort of graph for media playback to build. it is totally different, but if you have experience and the need for complicated directshow, then you will see some analogy.
and gstreamer also has an opengl plugin for image effects and shaders, ....
http://www.gstreamer.net/
http://www.gstreamer.net/releases/gst-plugins-gl/0.10.1.html

3d Realtime Software Renderer Open Source [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Is there a good 3d realtime software renderer with features similar to OpenGL/DirectX? Something similar of what cairo or anti-grain do for 2d, but in 3d.
I actually just know Mesa witch has a software OpenGL implementation , and Coco3d.
It should be open source :)
You could have a look into Orge 3D engine assuming you want an abstraction from the raw GL to something that already has a lot of the key features. It's open source too.
I believe the OpenSceneGraph has grown to be pretty competent and widely used.
For a pixel rendering engine why not have look at the DOOM rendering engine sources.
Another smaller and more standard API/OpenGL implementation called TinyGL could be something to look at too.
Technically OpenGL is just a standard, but there are OSS implementations available for download. I'm not sure you want a reference OGL driver though.
For 3d libraries, there are loads. Irrlicht, CrystalSpace, Ogre3d, to name just 3 off Sourceforge's trove list.
The only major open source real-time software renderer besides Mesa I know of is the Quake I engine. However, it's not up to par with current OpenGL or Direct3D capabilities.
If you can do without the source code, you could have a look at the Microsoft WARP10 renderer. It's a high performance implementation of Direct3D 10 on the CPU.
Check out Coin, an implementation of OpenInventor maintained by the company I'm employed by. It's licensed under a dual licensing model - GPL for free/opensource software. It's being actively developed and uses OpenGL to do rendering. It works on "all" platforms and can be easily integrated with Qt.
For standalone alternatives to OpenGL / Direct3D i would look at
Open source implementation of openGl : Mesa3D
Gallium3D
an implemantation of the the openRT specification: directViz
some reasearch to implement realtime RenderMan : RenderMan for realtime and the progress
OpenGL is open source, and should fall back to software rendering in the absense of 3D hardware on the system, provided that all the proper libraries are installed.