-5

我正在做一个项目,我必须开发一个应用程序,其中鼠标光标根据提供给它的坐标移动。这些坐标是从用户瞳孔的位置生成的。我能够得到坐标使用opencv的学生。现在,我有以下问题:

1.)我如何对鼠标光标进行编程,使其根据我给它的坐标移动。具体来说,我正在寻找可以做到这一点的库和函数。上网后我发现人们使用图形。带有 turbo CI 的h库正在 Visual Studio 2010 中做我的项目,所以请告诉我任何与之相关的方法。

2.)其次,我如何使用我用C++和opencv创建的这个所谓的鼠标在windows中充当主鼠标?我必须进行汇编级编程或设备驱动程序编写还是有其他合适的方法?

对于第一季度。如果您能给我一些示例代码,我将不胜感激。

谢谢。

................................这是我到目前为止所做的...... ............. 我在运行代码时遇到问题。我已经从http://winbgim.codecutter.org/集成了 WinBGIm v6.0 (我在 Windows 上使用 VS2010 Ultimate 7)。如果我运行示例代码,一切正常。但是,当我尝试运行文档中给出的这个鼠标示例时,发生了几个错误。请帮我纠正错误,我不知道它们是什么意思。

/* mouse example */
/*Filename:mint.cpp*/
    #include "winbgim.h"
    void main(void)
    {
    const int LIMIT = 10; // Number of clicks to stop program.
    int maxx, maxy; // Maximum x and y pixel coordinates
    int count = 0; // Number of mouse clicks
    int divisor; // Divisor for the length of a triangle side
    // Put the machine into graphics mode and get the maximum
    coordinates:
    initwindow(450, 300);
    maxx = getmaxx( );
    maxy = getmaxy( );
    // Draw a white circle with red inside and a radius of 50 pixels:
    setfillstyle(SOLID_FILL, RED);
    setcolor(WHITE);
    fillellipse(maxx/2, maxy/2, 50, 50);
    // Print a message and wait for a red pixel to be double clicked:
    settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
    outtextxy(20, 20, "Left click " << LIMIT << " times to end.");
    setcolor(BLUE);
    divisor = 2;
    while (count < LIMIT)
    {
    triangle(maxx/divisor, maxy/divisor);
    delay(500);
    divisor++;
    if (ismouseclick(WM_LBUTTONDOWN))
    {
    (clearmouseclick(WM_LBUTTONDOWN));
    count++;
    }
    }
    // Switch back to text mode:
    closegraph( );
    }
...................................................
The compiler errors are:

c:\program files\microsoft visual studio 10.0\vc\include\winbgim.h(302): error C2086: 'int right' : redefinition
1>c:\program files\microsoft visual studio 10.0\vc\include\winbgim.h(302) : see declaration of 'right'
1>c:\users\administrator\desktop\winbgm\driver\mint.cpp(20): error C2296: '<<' : illegal, left operand has type 'const char [12]'
1>c:\users\administrator\desktop\winbgm\driver\mint.cpp(25): error C3861: 'triangle': identifier not found
Build FAILED.
4

1 回答 1

0
  1. 您可以使用适用于 Windows 的 BGI 库 (WinBGIm) 的端口。这是一个关于如何做的一般想法的链接(VS2010中的示例项目)。
    项目: http: //muhammadallee.pbworks.com/w/file/53399106/WinBGIm-Demo.zip (您需要转到项目属性->链接器->输入并在那里更正lib文件的路径。或者,使用这个项目: http ://www.cs.colorado.edu/~main/bgi/visual/BGI2010.zip 文档:
    http ://www.cs.colorado.edu/~main/bgi/doc/

  2. 它将使用 Windows 标准鼠标。所以你不必担心。您可以通过SetMousePos()使用设置自己鼠标的坐标来简单地设置鼠标的坐标。

您的代码包含错误

代替

outtextxy(20, 20, "Left click " LIMIT << " times to end.");

使用此代码

char msg[80] = "";
sprintf(msg, "Left click %d times to end.", LIMIT);

并注释掉

triangle(maxx/divisor, maxy/divisor);

另外,从我提到的链接下载。经过这些更改后,它运行良好。

PS:如果它解决了你的问题,你可以将其标记为答案:)

于 2013-04-10T07:55:23.240 回答