2

我正在开发一个软件,当前版本有一个定制的网络摄像头设备驱动程序,我们将这个驱动程序与我们的软件一起使用,它在显示之前更改捕获的图像,非常类似于 YouCam。

基本上,当任何使用网络摄像头的应用程序启动时,我们的驱动程序会在显示之前在帧中运行一个处理。

问题是总是安装“2”个网络摄像头,真正的一个,以及我们的自定义驱动程序。

我注意到 YouCam 可以满足我们的需要,即在任何已安装的网络摄像头中挂接一些方法,该方法将在显示每一帧之前对其进行处理。

有谁知道该怎么做?

我们使用 VC++。

谢谢

4

4 回答 4

2

正如 bkritzer 所说,OpenCV很容易做你想做的事。

IplImage  *image = 0;   // OpenCV type
CvCapture *capture = 0; // OpenCV type

// Create capture
capture = cvCaptureFromCAM (0);
assert (capture, "Can't connect webcam");

// Capture images
while (stilCapturing)
{
    // Grab image
    cvGrabFrame (capture);
    // Retrieve image
    image = cvRetrieveFrame (capture);
    // You can configure refresh time
    if (image) cvWaitKey (refreshTime);
    // Process your image here
    //...
}

您可以将这些 OpenCV 调用封装到 C++ 类中并为其指定一个特定线程——这些将是您的驱动程序。

于 2009-07-24T09:55:53.297 回答
1

我认为 YouCam 使用 DirectShow变换过滤器。那是你需要的吗?

于 2009-07-15T18:24:26.047 回答
1

查看OpenCV库。它有一堆教程示例和库,可以完全满足您的要求。安装起来有点困难,但我之前已经让它工作了。

于 2009-07-16T22:39:38.170 回答
0

好吧,我认为这个问题中有两个关键概念被误解了:

1) 如何挂钩网络摄像头捕获
2) ...任何使用网络摄像头的应用程序...

如果我理解正确,OpenCV 对于编写您自己的完整应用程序很有用,完整意味着它将打开相机并处理图像。所以它不会满足第 2) 点,我理解它是指其他应用程序(不是你的!)打开相机,你的应用程序处理图像。

第 1 点)似乎证实了这一点,因为“钩子”这个词通常表示拦截不属于您自己的应用程序的其他一些进程。所以我怀疑这个问题是否得到回答。我也对它感兴趣。

于 2010-01-04T11:41:05.710 回答