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)