Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过OpenCV的camshift算法控制鼠标指针(或鼠标的基本功能)_C#_Opencv_Computer Vision_Emgucv_Human Computer Interface - Fatal编程技术网

C# 通过OpenCV的camshift算法控制鼠标指针(或鼠标的基本功能)

C# 通过OpenCV的camshift算法控制鼠标指针(或鼠标的基本功能),c#,opencv,computer-vision,emgucv,human-computer-interface,C#,Opencv,Computer Vision,Emgucv,Human Computer Interface,我已经使用openCV的EmguCV包装器用C编写了一个程序。程序使用camshift算法跟踪对象。将围绕对象绘制一个矩形。光标按矩形的中心移动。输入来自网络摄像头 最初的问题是光标无法覆盖整个屏幕。它的移动仅限于帧大小。所以我应用了一个乘法因子: X方向移动的屏幕宽度/帧宽度 Y方向移动的屏幕高度/帧高度 这样鼠标就可以覆盖整个区域。但是鼠标移动不再平稳。我无法指出两个紧挨着的图标。如何使鼠标在覆盖整个屏幕时移动顺畅,就像真实鼠标一样 要指出显而易见的一点:鼠标实现的不平滑性来自这样一个事实,

我已经使用openCV的EmguCV包装器用C编写了一个程序。程序使用camshift算法跟踪对象。将围绕对象绘制一个矩形。光标按矩形的中心移动。输入来自网络摄像头

最初的问题是光标无法覆盖整个屏幕。它的移动仅限于帧大小。所以我应用了一个乘法因子:

X方向移动的屏幕宽度/帧宽度

Y方向移动的屏幕高度/帧高度

这样鼠标就可以覆盖整个区域。但是鼠标移动不再平稳。我无法指出两个紧挨着的图标。如何使鼠标在覆盖整个屏幕时移动顺畅,就像真实鼠标一样

要指出显而易见的一点:鼠标实现的不平滑性来自这样一个事实,即camshift给出的矩形仅精确到一帧像素的精度,因此可能的最小移动将是屏幕大小/帧大小四舍五入到最近的屏幕像素

如果是这样的话,可以应用某种指针加速,就像使用真正的、低质量的鼠标一样。当然,如果是数千dpi激光鼠标,就没有必要这样做。基本上,光标在屏幕上移动的距离不是指针输入的距离(在本例中为camshift矩形位移),而是它的一个精心选择的函数。因此,使用加速函数fx,移动指针的步骤如下:

计算指针输入位移的向量,用v表示。 计算相应的单位长度向量,用u表示。 屏幕上的指针位移为v'=f | v |*u 我选择了像beta*e^alpha*x-1这样的形式的fx,其中0 如果是这样的话,可以应用某种指针加速,就像使用真正的、低质量的鼠标一样。当然,如果是数千dpi激光鼠标,就没有必要这样做。基本上,光标在屏幕上移动的距离不是指针输入的距离(在本例中为camshift矩形位移),而是它的一个精心选择的函数。因此,使用加速函数fx,移动指针的步骤如下:

计算指针输入位移的向量,用v表示。 计算相应的单位长度向量,用u表示。 屏幕上的指针位移为v'=f | v |*u
我选择了像beta*e^alpha*x-1这样的形式的外汇,其中0