현재 위치 - 중국 분류 정보 발표 플랫폼 - 비즈니스 서비스 정보 - < p>c# AForge.NET 구성 요소를 사용하여 카메라 조작, 오류 보고: 인스턴스가 참조되지 않음

< p>c# AForge.NET 구성 요소를 사용하여 카메라 조작, 오류 보고: 인스턴스가 참조되지 않음

< /p>

// 연결할 때 객체를 다시 정의했기 때문에 코드를 살펴보았습니다. 조금만 고치면 됩니다.

Using? 시스템; < /p>

using? System.Collections.Generic;; < /p>

using? System.ComponentModel;; < /p>

using? System.Data;; < /p>

using? System.Drawing;; < /p>

using? System.Drawing.Imaging;; < /p>

using? System.Text;; < /p>

using? System.Windows.Forms;; < /p>

using? System.Threading;; < /p>

using? A forge; < /p>

using? A forge.video; < /p>

using? A forge.video.directshow; < /p>

using? A forge.imaging; < /p>

using? A forge.imaging.filters; < /p>

using? System.IO;; < /p>

namespace? Camera

{

public? Partial? 클래스? 양식 1? :? Form

{

private? FilterInfoCollection? 비디오 디바이스;

공용? VideoCaptureDevice? 비디오 소스; -응? < /p>

private? Int? Flag? =? 1; < /p>

private? 문자열? 디르크? =? System.appdomain.currentdomain.basedirectory? +? "JPG"; -응? //저장된 디렉토리 캡처?

공용? Form1 ()

{

initializecomponent (); < /p>

}

private? Void? Form1 _ load (개체? Sender,? EventArgs? E)

{

if? (! Directory.exists (dirc))

directory.createdirectory (dirc); -응? < /p>

try

{

//? 모든 비디오 입력 장치 열거

비디오 장치? =? 새? Filterinfocollection (filtercategory.videoinputdevice); < /p>

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

throw? 새? Application exception (); < /p>

foreach? (필터 정보? Device? In? 비디오 디바이스)

{

tscbxcameras.items.add (device.name);

}

tscbxcameras.selectedindex? =? 0; < /p>

}

catch? (application exception)

{

tscbxcameras.items.add ("no?" ? 로칼? Capture? 디바이스 ");

비디오

Evices? =? Null;; < /p>

}

}

private? Void? ToolStripButton1_Click(object? Sender,? EventArgs? E)

{

camera conn (); < /p>

}

private? Void? CameraConn()

{// 여기서 객체를 재정의한 결과 오류 발생 < /p>

videoSource? =? 새? Videocapturedevice (video devices [tscbxcameras.selectedindex]. monikerstring);

비디오 소스. desiredframesize? =? 새? 크기 (320,? 240);

비디오 소스. desired frame rate? =? 1; < /p>

videPlayer.VideoSource? =? 비디오 소스;

videplayer.start (); < /p>

}

private? Void? ToolStripButton2_Click(object? Sender,? EventArgs? E)

{

videplayer.signal to stop ();

videplayer.waitforstop (); < /p>

}

private? Void? Form1_FormClosing(object? Sender,? FormClosingEventArgs? E)

{

toolstripbutton2 _ click (null,? Null); < /p>

}

private? Void? ToolStripButton3_Click(object? Sender,? EventArgs? E)

{

// 스크린샷을 이해하지 못하지만 < /p>

flag 를 간단히 보완해 드릴까요? =? 0; < /p>

if? (비디오 소스? = =? Null)

{

messagebox.show ("카메라 먼저 연결"); < /p>

}

else? If? (! Videosource.isrunning)

{

messagebox.show ("카메라가 꺼져 있습니다. 다시 켜십시오");

}

else

{

videosource.new frame? +=? 새? Newframeeventhandler (video _ newframe); < /p>

}

}

private? Void? Video _ newframe (개체? Sender,? NewFrameEventArgs? 이벤트)

{

bitmap? 비트맵? =? (bitmap) eventargs.frame.clone (); < /p>

if? (flag? = =? 0)

{

string? Img? =? 디르크? +? "/"? +? Datetime.now.tostring ("yyyymmdd hhmmss")?

+? ".jpg";

< p /p>

bitmap.Save(img);); < /p>

flag? =? 1; < /p>

}

}? < /p>

}

}