2024年5月1日发(作者:)

private void button2_Click(object sender, EventArgs e)

{

//截图

isGrab = true;

}

private void button3_Click(object sender, EventArgs e)

{

string button_text = ;

if (button_("Start Webcam"))

{

= "Stop Webcam";

StartCamera();

}

else

{

= "Start Webcam";

StopCamera();

}

}

private void StartCamera()

{

DsDevice[] devices = icesOfCat(nputDevice);

if ( == 0)

{

("No USB webcam connected");

= "Start Webcam";

return;

}

else

{

CaptureVideo(devices[0]);

}

}

private void StopCamera()

{

= "Start Webcam";

CloseInterfaces();

}

public void CaptureVideo(DsDevice device)

{

= null;

int hr = 0;

IBaseFilter sourceFilter = null;

ISampleGrabber sampleGrabber = null;

try

{

// Get DirectShow interfaces

GetInterfaces();

// Attach the filter graph to the capture graph

hr = tergraph(uilder);

xceptionForHR(hr);

// Use the system device enumerator and class enumerator to find

// a video capture/preview device, such as a desktop USB video camera.

sourceFilter = SelectCaptureDevice(device);

// Add Capture filter to graph.

hr = ter(sourceFilter, "Video Capture");

xceptionForHR(hr);

// Initialize SampleGrabber.

sampleGrabber = new SampleGrabber() as ISampleGrabber;

// Configure SampleGrabber. Add preview callback.

ConfigureSampleGrabber(sampleGrabber);

// Add SampleGrabber to graph.

hr = ter(sampleGrabber as IBaseFilter, "Frame Callback");

xceptionForHR(hr);

// Configure preview settings.

SetConfigParams(eGraphBuilder, sourceFilter, _previewFPS, _previewWidth, _previewHeight);

// Render the preview

hr = Stream(w, , sourceFilter, (sampleGrabber as IBaseFilter),null);