1、激光虚拟键盘设计通过光学手段,将计算机键盘的画面通过激光投影到任意的平面上(如桌面)上,并且允许操作者像使用真实键盘那样进行输入操作。以Opencv提供的开源计算机视觉库为开发环境,利用激光三角测距原理,通过摄像头采集虚拟键盘按键的三维坐标,来判断按键输入事件。设计思想目录硬件软件总结123 系统结构框图整个系统主要硬件构成:红外激光定位模块:一字线激光 50mw 808nm图像投影模块:键盘投影器红外图像采集模块:广角摄像头 加装红外带通滤波片 硬件电路介绍 系统软件设计 图像预处理程序设计由于本设计里采用了广角镜头,摄像头采集到的画面会严重扭曲,扭曲的画面是很难直接进行处理,计算出之后的坐
2、标。因此需要对摄像头镜头进行校正。首先加载原始图像,CV-loadimage(strfilename,flags=cv_load_image_color),其中strfilename为被读入的文件名,flags为指定读入的图像的颜色和深度。然后畸变校正CvUndistort2(src,dst,intrinsic_matrix,distortion_coeffs),其中src为原始图像,dst为结果图像,intrinsic_matrix为相机参数矩阵,distortion_coeffs)为4个变形系数组成的向量。再用opencv提供的cvRemap函数,通过校正数据将扭曲的画面重新校正。思想实现
3、 兴趣点提取程序设计先用cvFindContours对光斑画面进行轮廓提取,然后算出每个光斑区域在图像中的位置,进一步通过质心法求出光斑中心的大概坐标。首先灰度化,通过 cvCvtColor (src,dst, CV_BGR2GRAY)实现;然后二值化阈值,cvThreshold( dst,dst, f_thresh,255,CV_THRESH_BINARY)实现;最后查找轮廓,通过cvFindContours(dst, f_storage,&contours)实现。思想实现 质心法然后关于质心法,先要弄清图像矩。对于一张二维图像, ,p+q阶矩阵定义: , 然后对其进行离散化得到离散化后的数
4、字图像, ,0阶矩(m00)为物体的质量,1阶矩(m10, m01)表示物体的质心,2阶矩(m20, m02, m11)表示旋转半径. 因此图像的质心坐标计算公式: ),( yxfqdxdypyxpqm),(11myxqfpjipqNiNj000010010/,/immjmmcc思想 obj._center.x = myMoments.m10 / myMoments.m00;obj._center.y = myMoments.m01 / myMoments.m00;实现 按键映射程序设计在得到f(x,y)后,要进行对应的按键事件的判断。这需要建立以个映射机制。利用GUI系统进行UI元素的碰撞。思想 首先将键盘数据存储下来实现 然后通过kd_tree算法查找 注入事件程序设计采用windows提供的SendInput API想系统注入按键事件。postmessage(_hwnd,wm_KEYD0WN,A,0) /模拟按键Apostmessage(_hwnd,wm_KEYD0WN,A,129) /模拟组合按键 ALT+A 实现思想 总结本设计可以完成键盘单个按键及组合按键输入,还有绘图功能。通过对每个模块的软硬件设计及调试,进一步提高我对计算机视觉的认识。感谢各位2022-6-3