質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

2回答

3000閲覧

opencvsharpでCS0649

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2020/02/22 11:44

前提・実現したいこと

こちらのサイトを見ながら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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

C#

1InitializeComponent(); 2 3 //カメラ画像取得用のVideoCapture作成 4 if (!capture.IsOpened())

の所に

C#

1 capture = new VideoCapture(0);

が抜けています。

なので

C#

1 InitializeComponent(); 2 //カメラ画像取得用のVideoCapture作成 3 capture = new VideoCapture(0); 4 if (!capture.IsOpened())

で試してみてください。

投稿2020/02/26 02:32

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

captureって変数に初期化も代入もされてないからnullのまんまだけど、それでいいの?
とおっしゃってます。そんでそれをどうしたいんでしょうか

投稿2020/02/22 11:48

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問