最近对流行的MULTITOUCH技术很感兴趣,顺便在网络上搜寻了一下,与TOUCHSCREEN(触摸屏)相比,利用计算机视觉实现的MULTITOUCH,其应用前景似乎更加广阔。利用OPENCV里面的基本功能,结合TOUCHLIB,可以做很多有意思的事情。
下面是关于TOUCHLIB的一个简单介绍,偷懒,就直接帖过来了,没有翻译。
网址: http://www.whitenoiseaudio.com/touchlib/
========================================================
What is Touchlib?
Touchlib is our library for creating multi-touch interaction surfaces. It handles tracking blobs of infrared light for you and sends your programs multitouch events, such as 'finger down', 'finger moved', and 'finger released'. It includes a configuration app and a few demos to get you started. It interaces with most major types of webcams and video capture devices. It currently works only under windows but efforts are being made to port it to other platforms.
Who Should Use Touchlib?
Touchlib only comes with simple demo applications. If you want to use touchlib you must be prepared to make your own apps. There are a few ways to do this. You can build applications in C++ and take advantage of touchlib's simple programming interface. Touchlib does not provide you with any graphical or front end abilities - it simply passes you touch events. The graphics are up to you. If you like, take a look at the example apps which use OpenGL GLUT.
If you don't want to have to compile touchlib, binaries are available.
As of the current version, touchlib now can broadcast events in the TUIO protocol (which uses OSC). This makes touchlib compatible with several other applications that support this protocol, such as vvvv, Processing, PureData, etc.. This also makes it possible to use touchlib for blob detection / tracking and something like vvvv or Processing to write appliactions. Of course the other option is to do all your blob detection and processing in vvvv or processing. It's up to you. Supporting the TUIO protocol also enables a distributed architecture where one machine can be devoted to detection and tracking and another machine can handle the application.
If you don't like touchlib and want to program your own system, the latest version of OpenCV (1.0) now has support for blob detection and tracking. This might be a good starting point.
My Mindmap
My mindmap for the touchscreen is available here. This contains info on what parts you'll need for the construction of the screen, where to find them and some very basic instructions for how to build a screen. It also includes some more links. I hope it's useful for some of the people reading this who are interested in doing their own screens. You'll need Freemind (which is coincidentally, free), in order to view it. I'm a big fan of freemind for planning out projects and getting ideas down. It's hierarchical nature allows you to organize and hide parts you are not interested in. It can also link to images, other mindmaps and web pages.
FAQ
Frequently asked questions about the construction of the screen can be found here.
Where to get the source to Touchlib, our multitouch table library:
All our source code is available on our Google Code site at http://code.google.com/p/touchlib/ . You can acces the repsitory using Subversion. If you are using windows, get TortoiseSVN. Use Tortoise to access the repository and download all the files (much easier than going thru the web interface). If you are interested in porting touchlib to linux or the mac, please email me. The system was written in such a way that it should be easy to port and does not depend heavily on any windows specific api's.
Binaries are available here.
Touchlib is written in C++ (the BlobTracking / Analysis is all written by yours truly) and has a Visual Studio 2005 Solution ready to compile. No docs are available right now and it's windows only (though it should be possible to make everything compile under other OS's with a little work). It currently depends on OpenCV, DirectShow (you'll need the Microsoft Platform SDK), VideoWrapper and the DSVideoLib. The source code includes our main library which you can link into your application to start capturing touch events. It has support for most major camera/webcam types. It also includes a basic config app which will need to be run in order to calibrate your camera, and has a couple example apps. Alternately, I've heard other people have used things like vvvv, EyesWeb, processing and Max/MSP in order to do blob tracking / processing and make applications. You can check out some of the demo apps if you want to see how it works. Pong or the config app should be fairly easy to follow. Setting up a bare minimum multitouch app should only take a dozen lines of code or less.
DL Links for dependencies:
You'll need to configure a few environment variables to get everything compiled. They are:
- DSVL_HOME - dsvideolib root directory
- VIDEOWRAPPER_HOME - root directory of the video wrapper library
- OPENCV_HOME - root directory of OpenCV
- OSCPACK_HOME - root directory of oscpack
The config app
In order to calibrate the touchlib library for your camera and projector, you'll need to run the config app. Here's how it works. You'll need to set up your computer so that the main monitor is the video projector so that the app comes up on that screen. Run the config app. Press 'b' at any time to recapture the background. Tweak the sliders until you get the desired results. The last step (rectify) should just have light coming from your finger tips (no background noise, etc). When you are satisfied press 'enter'. This will launch the app in full screen mode and you'll see a grid of points (green pluses). Now you can press 'c' to start calibrating. The current point should turn red. Press on your FTIR screen where the point is. Hopefully a press is detected (you can check by looking in the debug window). Press 'space' to calibrate the next point. You'll continue through until all points are calibrated. Note that the screen may not indicate where you are pressing. When you are all done, you can press 'ESC' to quit. All your changes (slider tweaks and calibration points) are saved to the config.xml file. Now when you run any touchlib app it will be calibrated. Note that any changes to where the projector is pointing or your webcam will require a re-calibration.
Testing
Alternate config files are available if you want to test the library using an .AVI for input (instead of the webcam). Replace the config.xml with 5point_avi.xml or 2point_avi.xml. You can edit those files to use a different AVI if you like (you can record a new one using your camera - but you may need to tweak some of the other settings in the config too).
分享到:
相关推荐
OpenCV与QT的配置问题
opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接...
本文档介绍了几种opencv与MFC结合的编程实例。本文档介绍了几种opencv与MFC结合的编程实例。本文档介绍了几种opencv与MFC结合的编程实例。
opencv4.8.0人脸识别的类库,在windows 10 下 vs2022的cmaker编译。原生的opencv4.8.0是基于jdk11编译的。此版本是基于jdk1.8进行编译。可在相应的环境下运行。 opencv4.8.0人脸识别的类库,在windows 10 下 vs2022...
OpenCV与VS的配置问题
opencv安装包,下载后直接进行安装就可以使用opencv了,同时可以上网搜索test代码进行测试
opencv 4.1官方文档,可以有效学习opencv。介绍了基本API等
openCV 中文手册 openCV 中文手册 openCV 中文手册
opencv安装包,包括以下版本 OpenCV - 2.4.13.6 OpenCV - 3.4.10 OpenCV - 3.4.11 OpenCV - 3.4.4 OpenCV - 3.4.5 OpenCV - 3.4.6 OpenCV - 3.4.7 OpenCV - 3.4.8 OpenCV - 3.4.9 OpenCV - 4.0.0 OpenCV - 4.0.1 ...
多点触屏软件CCV,软件使用了opencv和touchlib,封装好了界面,可以矫正网格,发送flash的TUIO消息,很好用。-Multi-touch software CCV, the software uses opencv and touchlib, package good interface, you can ...
OpenCV全版本下载,从OpenCV1.0.0~OpenCV4.4.0,所有资源从OpenCV官网下载。仅Linux版本适用。
opencv与cuda混合编程,采用cuda里面的gpu模板与cuda结合,环境vs2008,opencv2.4.9.注意需要用Cmake重新编译opencv库
OpenCvSharp 微信二维码引擎 Demo VS2022+.net 4.8 +OpenCvSharp4 微信开源了其二维码的解码功能,并贡献给 OpenCV 社区。其开源的 wechat_qrcode 项目被收录到 OpenCV contrib 项目中。从 OpenCV 4.5.2 版本开始,...
OpenCV 在计算机视觉领域扮演着重要的角色。...书本配套的OpenCV2 和OpenCV3 双版本的示例代码包中, 含有总计两百多个详细注释的程序源代码与思路说明。读者可以按图索骥, 按技术方向进行快速上手和深入学习。
opencv与halcon的Mat与HObject互转的完整测试程序,包含测试图片
opencv 多种版本 包括 opencv2.4.13 opencv3.4.6 opencv4.1.0
OpencV与MFC综合应用 好多有用的代码
opencv 3.1.0的32位版本 opencv 3.1.0的X86版本 含bin文件和lib文件 ...以及opencv_calib3d310.dll,opencv_core310.dll,opencv_ffmpeg310.dll,opencv_flann310.dll,opencv_photo310.dll等20个dll文件
opencv3编程指导书,适用于学习opencv者
此压缩包内包含32位与64位,debug和release的所有已编译完成的动态库,支持freetype可以将中文输出在图像上. freetype使用方法: #include <opencv2/opencv.hpp> #include <opencv2/freetype.hpp> #pragma comment(lib,...