1

私は C# で EmguCV を使用しています。Web カメラからフレームを取得したいときに問題に直面しています。ステートメントに赤い下線が表示されます。

imgOrg = capturecam.QueryFrame();

エラー: タイプ 'Emgu.CV.Mat' を 'Emgu.CV.Image' に暗黙的に変換できません

どうすればこの問題を解決できますか?

私のコード:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;

namespace test2
{
    public partial class Form1 : Form
    {
        Image<Bgr, Byte> imgOrg; //image type RGB (or Bgr as we say in Open CV)
        private Capture capturecam;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                capturecam = new Capture();
            }
            catch (NullReferenceException exception)
            {
                MessageBox.Show(exception.Message);
                return;
            }
            Application.Idle += new EventHandler(ProcessFunction);

        }
        private void ProcessFunction(object sender, EventArgs arg)
        {
            imgOrg = capturecam.QueryFrame(); // error line
            imageBox1.Image = imgOrg;
        }
    }
}
4

6 に答える 6

6

このステートメントは機能します。

Image<Bgr, Byte> img = mat.ToImage<Bgr, Byte>();
于 2015-11-28T06:49:54.820 に答える
2

これを試して:

imgOrg = capturecam.QueryFrame().ToImage<Bgr, Byte>();

ここを見てください: C#で(Emgu CVバージョン3)でマットを画像に変換する方法は?

または、Image 変数を Mat に変更します。

Mat imgOrg = new Mat(); // instead of: Image<Bgr, Byte> imgOrg;
imgOrg = capture.QueryFrame();
imageBox1.Image = imgOrg;
于 2016-09-22T01:50:56.003 に答える
1
imgOrg = new Image(capturecam.QueryFrame().Bitmap);

このコードは私のために働いた. 私もあなたのために働くことを願っています。

于 2015-09-30T11:30:29.223 に答える
0

画像 FRAME2= frame.ToImage();

于 2015-07-11T15:23:15.430 に答える
-1

例を参照してください。EmguCV 3.0 では QueryFrame() は使用されなくなりました。これは Retrieve() 関数に置き換えられます。

以下に示すようにサンプル:

        Mat frame = new Mat();
        cap.Retrieve(frame, 0);
        Mat grayFrame = new Mat();
        CvInvoke.CvtColor(frame, grayFrame, ColorConversion.Bgr2Gray);

        imageBox1.Image = frame;
        imageBox2.Image = grayFrame;
于 2015-07-23T07:37:24.600 に答える