- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 EmguCV(openCV 的包装器)用 C# 编写了一个程序。该程序使用 camshift 算法跟踪对象。在对象周围绘制了一个矩形。光标移动到矩形的中心。输入来自网络摄像头。
最初的问题是光标无法覆盖整个屏幕。它的运动仅限于框架尺寸。所以我应用了一个倍增因子:
X 方向移动的屏幕宽度/帧宽度。
Y方向移动的screenheight/frameheight
有了这个,鼠标覆盖了整个区域。但是鼠标移动不再流畅。我无法指向位置很近的两个图标。如何在覆盖整个屏幕的同时使鼠标移动流畅,就像真正的鼠标一样?
最佳答案
要指出一个明显的问题:您的鼠标实现的非平滑性来自于 camshift 给出的矩形仅精确到一帧像素的精度,因此尽可能小的移动将屏幕大小/帧大小四舍五入到最近的屏幕像素。
如果是这种情况,可以应用某种指针加速,就像使用真正的低质量鼠标时所做的那样(当然,如果是数千 dpi 激光鼠标,则不需要这样的事情)。基本上,光标在屏幕上移动的距离不是指针输入所采用的距离(在本例中为 camshift 矩形位移),而是它的一个巧妙选择的函数。因此,使用加速函数 f(x),移动指针的步骤将是这样的:
我选择了 beta * e^(alpha * x - 1) 形式的 f(x),其中 0 <alpha 和 0 <beta <= 1 是应该根据经验选择的参数。
基本上,任何在 0 处具有 1 或更小导数的函数都可以执行此操作(允许您使用输入的完全精度来进行精确的光标移动),随着 x 的增加而趋于无穷大(较大的移动应对应于较大的光标的移动)是单调递增的,并且具有单调递增的一阶导数。 编辑: 还需要加速度函数在0处取值为0,否则会出现很奇怪的 Action 。 :)
还希望有 f(framewidth) = screenwidth 以便在帧上移动被跟踪的对象会导致光标在屏幕上移动。指数公式非常好用,但使用二次或更高次多项式可能在计算上更简单,具体取决于那里的性能要求...
关于c# - 通过OpenCV的camshift算法控制鼠标指针(或者鼠标的基本功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291496/
我通过观看一些教程开发了camshift算法..但不幸的是它没有跟踪所选对象....这是我的代码..我是opencv的初学者,我需要帮助..问题是矩形不跟随要跟踪的对象... 这是我的代码: bool
我编写了创建 2 个线程的代码(我使用的是 glib)。第一个线程运行一个名为“Camera”的函数,该函数刚刚开始从相机捕获,并在屏幕上显示捕获的帧。第二个函数是算法 CamShift,它使用第一个
我正在使用 opencv 从网络摄像头源跟踪用户在 Python 中,所以代码是这样的: cv.EllipseBox( frame, track_box, cv.CV_RGB(255,0,0), 3,
具有函数 cvMeanShift(&backproj, trackWindow,cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 15, 1 )
所以我大约两周前才开始使用 C++ 和 OpenCV,我并不完全确定我在做什么。基本上,我想给一个矩形起个名字,以便以后需要时可以使用它,但我不确定该怎么做。 我当前的代码: Point p1= Po
我目前正在梳理 OpenCv 中的两个示例,它们可以检测您的面部并跟踪物体。目的是先检测人脸,再进行跟踪。 我目前的代码: import numpy as np import cv2 import c
opencv c++ 接口(interface)的camShift 函数没有输出参数CvConnectedComp* comp 和CvBox2D* box=NULL。如果我使用 c++ 接口(inte
我正在尝试使用 OpenCV 追踪人脸的 CamShift algorithm但我发现的唯一示例是用 C++ 或 C 编写的。 如何在 C# 中使用 OpenCV 中的 CamShift 算法? 任何
我想知道在 OpenCV 中使用哪种直方图以及 camshift 算法。 是比率直方图还是加权直方图? 非常感谢。 最佳答案 我相信this site解释得很好。 如果您想了解更多关于 OpenCV
我正在使用 OpenCV 库函数进行手头项目跟踪。通过使用 Camshift() 函数,我可以跟踪我的手,但它并不稳定,即使我让我的手稳定,跟踪中也几乎没有移动。所以我无法在正确的位置执行鼠标点击操作
我正在尝试使用移动相机跟踪车辆。 Haar Feature-based Cascade Classifier 检测到车辆在 OpenCV 中。我使用预训练数据集 here .根据对象跟踪survey
我在 VS2010 中安装了 openCV2.3.1。我可以在 openCV 中读取图像而不会出现任何错误。但是当我从文件夹 open/samples/cpp 运行 camshiftdemo 时。它显
从视频文件开始,我逐帧扫描视频,直到我使用 OpenCV Haar 正面面部级联找到一张脸。然后我将这些坐标传递给 Camshift(使用 OpenCV 示例代码)以从该帧开始跟踪该面部。然后我在 C
我对 OpenCV 有点陌生,出于某种原因,我无法让 CamShift 在 C++ 中工作。首先,如果有人有使用 C++ 接口(interface)的 CamShift 示例,我将不胜感激。 其次,我
我正在构建用于通过手部识别和跟踪来控制鼠标指针的程序。我已完成使用肤色分割的手部追踪。现在,我要跟踪这只手并选择 camshift 算法。但是我有点困惑如何使用 emgucv 和 c# 将 camsh
我是一名优秀的程序员,十分优秀!