私はカレッジ スクール向けに C# でソフトウェアを作成していますが、これについてサポートが必要です。
使用した Youtube チュートリアル: http://www.youtube.com/watch?v=CaYQLq72ZN4
ビデオ画像のキャプチャ中にエラーが発生しました。ビデオ キャプチャが終了します。オブジェクト参照がオブジェクト インスタンスに設定されていません。
初めてソフトウェアを実行したときは完全に機能しましたが、閉じて再度開くと、このエラーが発生しました(プロセスが実行されているようです)。YouTube のチュートリアルに従ってみましたが、同様のエラーが原因で多くの苦情が寄せられていることに気付きました。はい、動作しますが、「開始」ボタンを3回押した場合にのみ、エラーがわかりません。
コード:
FRM:
using System;
using System.Linq;
using System.Text;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
namespace WinApp_FingerControl
{
public partial class Frm_CadastroCliente : Form
{
public Frm_CadastroCliente()
{
InitializeComponent();
}
WebCam webcam;
private void Frm_CadastroCliente_Load(object sender, EventArgs e)
{
webcam = new WebCam();
webcam.InitializeWebCam(ref imgVideo);
}
private void btn_IniciarCamera_Click(object sender, EventArgs e)
{
webcam.Start();
}
private void btn_Salvar_Click(object sender, EventArgs e)
{
Helper.SaveImageCapture(imgCapture.Image);
}
private void btn_FormatoVideo_Click(object sender, EventArgs e)
{
webcam.ResolutionSetting();
}
private void btnCapturar_Click(object sender, EventArgs e)
{
imgCapture.Image = imgVideo.Image;
}
private void button1_Click(object sender, EventArgs e)
{
webcam.AdvanceSetting();
}
}
}
Webcam.cs:
{
class WebCam
{
private WebCamCapture webcam;
private System.Windows.Forms.PictureBox _FrameImage;
private int FrameNumber = 30;
public void InitializeWebCam(ref System.Windows.Forms.PictureBox ImageControl)
{
webcam = new WebCamCapture();
webcam.FrameNumber = ((ulong)(0ul));
webcam.TimeToCapture_milliseconds = FrameNumber;
webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);
_FrameImage = ImageControl;
}
void webcam_ImageCaptured(object source, WebcamEventArgs e)
{
_FrameImage.Image = e.WebCamImage;
}
public void Start()
{
webcam.TimeToCapture_milliseconds = FrameNumber;
webcam.Start(0);
}
public void ResolutionSetting()
{
webcam.Config();
}
public void AdvanceSetting()
{
webcam.Config2();
}
}
}
Helper.cs
class Helper
{
public static void SaveImageCapture(System.Drawing.Image image)
{
SaveFileDialog s = new SaveFileDialog();
s.FileName = "Image";// Default file name
s.DefaultExt = ".Jpg";// Default file extension
s.Filter = "Image (.jpg)|*.jpg"; // Filter files by extension
// Show save file dialog box
// Process save file dialog box results
if (s.ShowDialog()==DialogResult.OK)
{
// Save Image
string filename = s.FileName;
FileStream fstream = new FileStream(filename, FileMode.Create);
image.Save(fstream, System.Drawing.Imaging.ImageFormat.Jpeg);
fstream.Close();
}
}
}