0
public partial class MainForm : Form
{
    private IplImage frame;
    private IplImage imgMain;
    private CvCapture VideoCapture;
    private IplImage frames;


    public MainForm()
    {
        InitializeComponent();
    }

    private void btnVideo_Click(object sender, EventArgs e)
    {
        double vidWidth, vidHeight;

        if (btnVideo.Text.CompareTo("Start Video") == 0)
        {
            try
            {
                VideoCapture = cvlib.cvCreateCameraCapture(0);


                if (VideoCapture == null)
                {
                    MessageBox.Show("Failed");
                    return;
                }

                btnVideo.Text = "Stop Video";

                cvlib.cvSetCaptureProperty(VideoCapture, cvlib.CV_CAP_PROP_FRAME_WIDTH, 640);
                cvlib.cvSetCaptureProperty(VideoCapture, cvlib.CV_CAP_PROP_FRAME_HEIGHT, 320);

                frames = cvlib.cvQueryFrame(VideoCapture);

                vidWidth = cvlib.cvGetCaptureProperty(VideoCapture, cvlib.CV_CAP_PROP_FRAME_WIDTH);
                vidHeight = cvlib.cvGetCaptureProperty(VideoCapture, cvlib.CV_CAP_PROP_FRAME_HEIGHT);

                CamImageBox.Width = (int)vidWidth;
                CamImageBox.Height = (int)vidHeight;

                timerGrab.Interval = 1000;
                timerGrab.Enabled = true;


            }
            catch (Exception excpt)
            {
                MessageBox.Show(excpt.Message);
            }
        }

        else
        {
            btnVideo.Text = "Start Video";
            timerGrab.Enabled = false;

            if (VideoCapture == null)
            {
                cvlib.cvReleaseImage(frames);
                VideoCapture = null;
            }
        }


    }

    private void timerGrab_Tick(object sender, EventArgs e)
    {
        frame = cvlib.cvQueryFrame(VideoCapture);

        if (frame == null)
        {
            timerGrab.Stop();
            MessageBox.Show("failed");
            return;
        }

        imgMain = cvlib.cvCreateImage(cvlib.cvSize(640, 480), 8, 3);

        CamImageBox.Image = cvlib.ToBitmap(imgMain, false);

        cvlib.cvReleaseImage(imgMain);

    }

}

使用するライブラリを変更しました。

現在は cvwrappercs230 です。これは c# での opencv のラッパーです。

また、cvwrappercpp230 がその dll をロードできなかったとのことでした。dll がフォルダー内にある場合でも、System.DLLNotfoundexception が発生します。

問題は、灰色の画面が表示されるのではなく、黒い画面が表示されないことです..

そして、私がそれを壊したときの問題はApplication.Run(new MainForm());

また、間隔を 1000 に変更しました。誰かが 42 は低すぎると言っていますが、まだ問題がどこにあるのかわかりません..

しかし、間隔を再び42に変更したとき。

ブレークポイントの問題に戻りますframe = cvlib.cvQueryFrame(videocapture)

4

0 に答える 0