當前位置:編程學習大全網 - 腳本源碼 - c# 利用AForge.NET組件操作攝像頭,報錯:未引用實例

c# 利用AForge.NET組件操作攝像頭,報錯:未引用實例

//看了下妳的代碼,錯誤的原因就是連接的時候重新定義了壹個對象。稍改下就好。using?System;

using?System.Collections.Generic;

using?System.ComponentModel;

using?System.Data;

using?System.Drawing;

using?System.Drawing.Imaging;

using?System.Text;

using?System.Windows.Forms;

using?System.Threading;

using?AForge;

using?AForge.Video;

using?AForge.Video.DirectShow;

using?AForge.Imaging;

using?AForge.Imaging.Filters;

using?System.IO;

namespace?Camera

{

public?partial?class?Form1?:?Form

{

private?FilterInfoCollection?videoDevices;

public?VideoCaptureDevice?videoSource;?

private?int?flag?=?1;

private?string?dirc?=?System.AppDomain.CurrentDomain.BaseDirectory?+?"JPG";?//截圖保存的目錄?

public?Form1()

{

InitializeComponent();

}

private?void?Form1_Load(object?sender,?EventArgs?e)

{

if?(!Directory.Exists(dirc))

Directory.CreateDirectory(dirc);?

try

{

//?枚舉所有視頻輸入設備

videoDevices?=?new?FilterInfoCollection(FilterCategory.VideoInputDevice);

if?(videoDevices.Count?==?0)

throw?new?ApplicationException();

foreach?(FilterInfo?device?in?videoDevices)

{

tscbxCameras.Items.Add(device.Name);

}

tscbxCameras.SelectedIndex?=?0;

}

catch?(ApplicationException)

{

tscbxCameras.Items.Add("No?local?capture?devices");

videoDevices?=?null;

}

}

private?void?toolStripButton1_Click(object?sender,?EventArgs?e)

{

CameraConn();

}

private?void?CameraConn()

{//妳這裏重新定義了壹個對象,所以出錯

videoSource?=?new?VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);

videoSource.DesiredFrameSize?=?new?Size(320,?240);

videoSource.DesiredFrameRate?=?1;

videPlayer.VideoSource?=?videoSource;

videPlayer.Start();

}

private?void?toolStripButton2_Click(object?sender,?EventArgs?e)

{

videPlayer.SignalToStop();

videPlayer.WaitForStop();

}

private?void?Form1_FormClosing(object?sender,?FormClosingEventArgs?e)

{

toolStripButton2_Click(null,?null);

}

private?void?toolStripButton3_Click(object?sender,?EventArgs?e)

{

//不懂截圖,但還是給妳簡單完善了下

flag?=?0;

if?(videoSource?==?null)

{

MessageBox.Show("請先連接攝像頭");

}

else?if?(!videoSource.IsRunning)

{

MessageBox.Show("攝像頭已經關閉,請重新打開");

}

else

{

videoSource.NewFrame?+=?new?NewFrameEventHandler(video_NewFrame);

}

}

private?void?video_NewFrame(object?sender,?NewFrameEventArgs?eventArgs)

{

Bitmap?bitmap?=?(Bitmap)eventArgs.Frame.Clone();

if?(flag?==?0)

{

string?img?=?dirc?+?"/"?+?DateTime.Now.ToString("yyyyMMddhhmmss")?+?".jpg";

bitmap.Save(img);

flag?=?1;

}

}?

}

}

  • 上一篇:dnf代幣券會清零嗎 dnf代幣券會不會清零呢
  • 下一篇:我心中的紅領巾的手抄報怎麽畫
  • copyright 2024編程學習大全網