Tôi hiện đang làm việc trên một dự án sử dụng Nhận dạng khuôn mặt. Do đó, tôi cần một cách để hiển thị hình ảnh webcam cho người dùng để có thể điều chỉnh khuôn mặt của mình.Làm thế nào để hiển thị hình ảnh webcam được chụp với Emgu?
Tôi đã cố gắng rất nhiều thứ để có được hình ảnh từ webcam sử dụng như ít CPU càng tốt:
Nhưng không ai trong số chúng được sử dụng tốt ... Dù bằng cách nào quá chậm hoặc quá tiêu tốn tài nguyên CPU.
Sau đó, tôi đã thử các Emgu library và tôi cảm thấy tuyệt vời về nó. Lúc đầu, tôi đã thử nó trong một dự án Biểu mẫu Windows và đang cập nhật hình ảnh trong một Hộp Hình ảnh . Nhưng sau đó, khi tôi đã cố gắng để tích hợp nó trong dự án WPF của tôi, tôi đã bị mắc kẹt trên làm thế nào để vượt qua hình ảnh của tôi để kiểm soát hình ảnh của tôi ..
Ngay bây giờ, tôi đã mã nguồn sau đây:
<Window x:Class="HA.FacialRecognition.Enroll.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Width="800" Height="600"
Loaded="Window_Loaded" Closing="Window_Closing">
<Grid>
<Image x:Name="webcam" Width="640" Height="480" >
<Image.Clip>
<EllipseGeometry RadiusX="240" RadiusY="240">
<EllipseGeometry.Center>
<Point X="320" Y="240" />
</EllipseGeometry.Center>
</EllipseGeometry>
</Image.Clip>
</Image>
</Grid>
</Window>
Và mã sau:
private Capture capture;
private System.Timers.Timer timer;
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
capture = new Capture();
capture.FlipHorizontal = true;
timer = new System.Timers.Timer();
timer.Interval = 15;
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
using (Image<Bgr, byte> frame = capture.QueryFrame())
{
if (frame != null)
{
var bmp = frame.Bitmap;
// How do I pass this bitmap to my Image control called "webcam"?
}
}
}
private void Window_Closing(object sender, CancelEventArgs e)
{
if (capture != null)
{
capture.Dispose();
}
}
tôi đoán là sử dụng BitmapSource/WriteableBitmap nhưng tôi đã không nhận được họ làm việc ...
Cảm ơn!
Yeah, nhưng những gì tôi cần phải làm gì để làm cho tôi "webcam" Điều khiển hình ảnh hiển thị hình ảnh? Tôi đã thử: webcam.Source = frame.AsImageSource(); Nhưng nó không hiển thị bất cứ điều gì ... – ZogStriP
Đặt nguồn là đủ. Bạn có thể thử chỉ định một Int32Rect với kích thước của hình ảnh? – dahlbyk
Tôi có cùng một vấn đề! Và maging.CreateBitmapSourceFromHBitmap (image.Bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); gây rò rỉ bộ nhớ trong WPF! – Evgeny