my visually impaired sister uses a webcam with DIY stand as a digital magnifier to read printed texts.

We wanted to initiate a project to create a software - in fact only a modified webcam viewer (like Cheese in Linux). Is it possible to have one SW for both platforms (Windows and Linux) = almost the same code, same filters and GUI, and just use the video stream using some standard protocol? Because most people use Win, but we would like to support Linux primarily.

I am not sure if this is possible in windows. We need the software to take the video stream and apply some color and other effects like those described in this article.

The idea is to maintain only one application (best would be open-source) with a small differences for both platforms. For the GUI, the GTK seems to be optimal as it is accessible for ScreenReader SW. Such app would not only help the visually impaired but also the elderly people.

So, is this possible or is this idea really stupid?

thanks :-D

  • I don't have the faintest idea of how it is done, but you could probably view the webcam with vlc and do some vlc scripting to achieve the effect that you want.... – Srisa Jun 14 '11 at 7:41
  • Ekiga is an open source cross-platform VOIP program that supports video, so it's worth looking into how they do it. – artbristol Nov 18 '13 at 10:54

I suggest OpenCV.

It can be used to grab the frames from the camera and giving the fact that it's a computer vision library chances are that you'll be able to implement the effects you want also using this library.

| improve this answer | |
  • OpenCV is tops! For a truly platform independent application using OpenCV there exists JavaCV Java library that integrates with OpenCV. I was able to use this on both Linux and Windows. – maple_shaft Feb 29 '12 at 11:57

One option would be to use a platform agnostic language such as Java, this will run under both windows and linux (and many other platforms) and should have support for webcams. Flash also supports web cams, although its image processing may not do what you require.

Alternatively, writing it in something like C++ should also be possible, provided you split the software into components. For instance the method of reading the stream from the camera will be different on windows and linux, provided this is split into a DLL or similar, only this module will need to change between versions, leaving all other code in the project unchanged.

| improve this answer | |
  • thanks, the C++ alternative looks better, as first the need of Java would increase the system load and second, although Java should be accessible via "java access bridge" in Windows, I have no experience with it. I am also going to ask my friends, whether GTK Windows apps are accessible with apps like Jaws or Zoomtext which low vision users often have. – Juhele Jun 14 '11 at 10:16

Java is probably the best approach being platform independent. There are various Java frameworks and tools available as well that provide direct WebCam and media support.

JMF or (Java Media Framework) is probably the oldest however it is no longer currently supported and I personally find it to be a pain to use. I can verify I got it to work in all versions of Windows although Vista and Windows 7 were difficult. I can't verify that this will work in Linux perfectly.

FMJ or (Freedom for Media in Java) is an open source library that utilizes the same interface as JMF and claims to support most of the same functionality as well. It was an attempt to continue support for the JMF project and as a protest to Oracle refusing to release the release the source for the project. I have demoed this app and it appears to work for my web cam and I did not have to write any additional code. Further I did not test this on Linux.

Both of these frameworks require the java.awt standard libraries which require an OS that supports these libraries. Some Linux and Unix distros do not support windowed screens and thus these distros will not support any of the above mentioned frameworks.

| improve this answer | |

While I realise that this answer is a bit late, my suggestion would be QT. QT is a C++ library that allows for cross-platform development and runs well on Windows, Mac, Linux and Android. This would allow for the same code to be used for the GUI and the webcam access on all the platforms you require.

The webcam access API, for example, is documented here:


| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.