前提・実現したいこと
こちらのサイトを見ながらopencvsharpを試しています。実行すると『captureがnullでした。』となります。
どうすればいいでしょうか?
発生している問題・エラーメッセージ
captureがnullでした。 CS0649 フィールド 'Form1.capture' は割り当てられません。常に既定値 null を使用します。
該当のソースコード
C#
1 public partial class Form1 : Form 2 { 3 int WIDTH = 640; 4 int HEIGHT = 480; 5 Mat frame; 6 VideoCapture capture; 7 Bitmap bmp; 8 Graphics graphic; 9 10 public Form1() 11 { 12 InitializeComponent(); 13 14 //カメラ画像取得用のVideoCapture作成 15 if (!capture.IsOpened()) 16 { 17 MessageBox.Show("camera was not found!"); 18 this.Close(); 19 } 20 capture.FrameWidth = WIDTH; 21 capture.FrameHeight = HEIGHT; 22 23 //取得先のMat作成 24 frame = new Mat(HEIGHT, WIDTH, MatType.CV_8UC3); 25 26 //表示用のBitmap作成 27 bmp = new Bitmap(frame.Cols, frame.Rows, (int)frame.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, frame.Data); 28 29 //PictureBoxを出力サイズに合わせるframe.Cols、frame.Rows 30 pictureBox1.Width = 320; 31 pictureBox1.Height = 240; 32 33 //描画用のGraphics作成 34 graphic = pictureBox1.CreateGraphics(); 35 36 //画像取得スレッド開始 37 BackgroundWorker1.RunWorkerAsync(); 38 } 39 40 private void BackgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 41 { 42 //描画 43 graphic.DrawImage(bmp, 0, 0, frame.Cols, frame.Rows); 44 } 45 46 private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 47 { 48 BackgroundWorker bw = (BackgroundWorker)sender; 49 50 while(!BackgroundWorker1.CancellationPending) 51 { 52 //画像取得 53 capture.Grab(); 54 NativeMethods.videoio_VideoCapture_operatorRightShift_Mat(capture.CvPtr, frame.CvPtr); 55 56 bw.ReportProgress(0); 57 } 58 } 59 private void Form1_FormClosing(object sender, FormClosingEventArgs e) 60 { 61 //スレッドの終了を待機 62 BackgroundWorker1.CancelAsync(); 63 while (BackgroundWorker1.IsBusy) 64 Application.DoEvents(); 65 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。