2

私は、現在のバージョンに Web カメラのカスタム デバイス ドライバーがあるソフトウェアに取り組んでおり、YouCam と非常によく似た、表示する前にキャプチャ画像を変更するソフトウェアでこのドライバーを使用しています。

基本的に、ウェブカメラを使用するアプリケーションが起動すると、ドライバーはフレームを表示する前にフレーム内で処理を実行します。

問題は、常に「2」個の Web カメラ、実際の Web カメラ、およびカスタム ドライバーがインストールされていることです。

YouCam は必要なことを行っていることに気付きました。つまり、インストールされている Web カメラに、各フレームを表示する前に処理する何らかのメソッドをフックします。

誰もこれを行う方法を知っていますか?

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

OpenCVライブラリを確認してください。まさにあなたが求めていることを行うチュートリアルの例とライブラリがたくさんあります。取り付けは少し大変ですが、以前は動いていました。

于 2009-07-16T22:39:38.170 に答える
0

この質問には、誤解されている 2 つの重要な概念があると思います。

1)ウェブカメラ キャプチャをフック
する方法 2) ...ウェブカメラを使用する任意のアプリケーション...

私の理解が正しければ、OpenCV は独自の完全なアプリケーションを作成するのに役立ちます。これは、カメラを開いて画像を処理することを意味します。したがって、ポイント 2) を満たすことはできません。これは、他のアプリケーション (あなたのものではない!) がカメラを開き、アプリケーションが画像を処理することを指していると理解しています。

ポイント1)「フック」は通常、自分のアプリケーションの一部ではない他のプロセスの傍受を意味する単語であるため、それを確認しているようです。したがって、この質問に答えがあるかどうかは疑問です。私もそれに興味があります。

于 2010-01-04T11:41:05.710 に答える