VC+DirectShow对视频进行图片处理之四
2007-03-15 21:48:55 来源:WEB开发网*xPos = ScreenWid - x * ScreenWid / m_bmpWid;
*yPos = y * ScreenHei / m_bmpHei;
其中 ScreenWid 、ScreenHei 分别是屏幕的宽和高,用 ScreenWid = GetSystemMetrics(SM_CXSCREEN) 和 ScreenHei = GetSystemMetrics(SM_CYSCREEN) 得到,而m_bmpWid、m_bmpHei 当然是图片的宽和高了。得到鼠标坐标后再用 SetCursorPos 设置即可,只不过鼠标晃动会比较厉害,这与图像噪音有关,可能先做个柔化处理会好一点,但鉴于摄像头的摄像质量,我不想作无谓的挣扎,您不会真的想用摄像头代替鼠标吧?!
在使用前应该调整二值图的阀值,使整个图都变成黑色,保证能正确滤除干扰,不然在按下"鼠标控制"按钮后您的鼠标就不会听话,您会无法控制好它。请问没有鼠标的帮忙您将如何关闭程序?对了,"Alt + F4",别忘了,否则您得硬着动手把摄像头拔掉!!
可以说控制鼠标真的很容易实现,不过效果出奇的不错,这种好像无影无踪的控制方式相当令人惊奇,记得我的大哥看程序时对我前面的图像处理没有一丝反应,看到这个却大大的惊奇!呵呵。如果您有兴趣的话可以在此方面做更多的试验,例如可以把手裁剪出来,让它参加拨动一个小球等游戏,只要您的几何过关、有毅力就可以实现。
8. 更实用的数字减影技术
请看上面两幅图,左边的是先存储一幅背景图然后把手放到摄像头前摄像,用摄到的图片减去背景图得到的图;中图是根据左图把手的颜色设为原来颜色得到的;右图是不断用新图片减去上一幅图得到的手移动痕迹图。这充分显示了数字减影的功用:能够从背景分解物体和侦测到物体的运动。
如此说来此技术在安保方面的应用会很突出,像上面右图那样不断减去上一幅图片,当减影后得到的图片差别大于某一程度的点多到一定数值时就说明有情况发生,这时候就提醒保安工作,弥补保安的人为失误,也可以在此时启动录像录取有价值的情况。请看程序:
Tags:VC DirectShow 视频
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接