Как отобразить изображения веб-камеры, полученные с Emgu?

Это потому, что это метод, прикрепленный к объекту div - подумайте о нем так:

const div = {
    addEventListener: function(event, callback) {...}
};

В этом примере this будет ссылаться на div, как вы ожидаете.

Это то, что на самом деле происходит в вашем коде, только это определяется по-другому.

10
задан Drew Noakes 5 July 2009 в 13:58
поделиться

6 ответов

В классе изображений есть свойство UriSource, которое вы можете искать

3
ответ дан 4 December 2019 в 00:27
поделиться

I believe you have to use interop (source):

using System.Windows.Interop;
using System.Windows.Media.Imaging;

public static ImageSource AsImageSource<TColor, TDepth>(
    this Image<TColor, TDepth> image) where TColor : IColor, new()
{
    return Imaging.CreateBitmapSourceFromHBitmap(image.Bitmap.GetHbitmap(),
                       IntPtr.Zero, Int32Rect.Empty,
                       BitmapSizeOptions.FromEmptyOptions());
}

Which could be used like this:

void timer_Elapsed(object sender, ElapsedEventArgs e)
{
        using (Image<Bgr, byte> frame = capture.QueryFrame())
        {
                if (frame != null)
                {
                        var bmp = frame.AsImageSource();
                }
        }
}

If the interop doesn't perform well enough, take a look at the source of Image.ToBitmap and Image.get_Bitmap to see how you could implement your own WriteableBitmap.

0
ответ дан 4 December 2019 в 00:27
поделиться

Посмотрите вики-страницу Emgu -> Учебники -> Примеры -> WPF (Windows Presentation Foundation) Он содержит следующий фрагмент кода для преобразования вашего IImage в BitmapSource, который вы можете напрямую применить к своему элементу управления.

using Emgu.CV; using System.Runtime.InteropServices; ...

    /// <summary>
    /// Delete a GDI object
    /// </summary>
    /// <param name="o">The poniter to the GDI object to be deleted</param>
    /// <returns></returns>
    [DllImport("gdi32")]
    private static extern int DeleteObject(IntPtr o);

    /// <summary>
    /// Convert an IImage to a WPF BitmapSource. The result can be used in the Set Property of Image.Source
    /// </summary>
    /// <param name="image">The Emgu CV Image</param>
    /// <returns>The equivalent BitmapSource</returns>
    public static BitmapSource ToBitmapSource(IImage image)
    {
        using (System.Drawing.Bitmap source = image.Bitmap)
        {
            IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap

            BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                ptr,
                IntPtr.Zero,
                Int32Rect.Empty,
                System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

            DeleteObject(ptr); //release the HBitmap
            return bs;
        }
    }
3
ответ дан 4 December 2019 в 00:27
поделиться

Я думаю, все, что вы ищете, это:

Image<Bgr, Byte> frame = capture.QueryFrame();
pictureBox1.Image = image.ToBitmap(pictureBox1.Width, pictureBox1.Height);
3
ответ дан 4 December 2019 в 00:27
поделиться

Я не уверен, но в документах не упоминается LocationMatch как возможный контекст.

«Контекст: конфигурация сервера, виртуальный узел, каталог, .htaccess»

http://httpd.apache.org/docs/2.0/mod/mod_expires.html

-121--5045363-

Да, есть указатель: IntPtr

Википедия: «которая является безопасным управляемым эквивалентом int * и не требует небезопасного кода»

-121--1127623-

Попробуйте.

http://easywebcam.codeplex.com/

Я использовал его и он был отличным..

0
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: