作者coal511464 (coal)
看板C_Sharp
标题[程式] EmguCV 更新video frame 问题
时间Fri Mar 21 17:56:56 2014
环境: EmguCV 2.4
IDE: VC# 2012
原本没有写在WPF中;跑出来正常的例子是。
这是视窗左边 这是右边
影片(load 进来的) | 一张图片
然後就是影片会一直跑 这样子~
片段程式码(这是ok的):
Capture capture = new Capture("影片的位置");
ImageViewer viewer = new ImageViewer();
Application.Idle += new EventHandler(delegate(object sender,
EventArgs e)
{
Image<Bgr, byte> frame = capture.QueryFrame();
viewer.Image = DrawMatches.Draw( "12.png", frame, out
matchTime);
});
viewer.ShowDialog();
但我要写在可以加入button的视窗,所以我就改成如下
Capture capture = new Capture("影片的位置");
Image<Bgr, Byte> resultImage;
Application.Idle += new EventHandler(delegate(object sender,
EventArgs e)
{
Image<Bgr, byte> frame = capture.QueryFrame();
resultImage = DrawMatches.Draw("12.png", frame, out
matchTime);
});
showImage.Source = ToBitmapSource(resultImage); //ToBitmapSource是转型
showImage是xaml的框框
这边会错的的地方在於 "resultImage" 会不认识Application.Idle里面的东西。
会有错误显示 "使用了没宣告的 resultImage"。
简单来说 就是 resultImage = DrawMatches.Draw 根本看不到。
请问我要怎麽改呢???
只要不加入Application.Idle 影片就只会一直停在第一个Frame。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.106.98
※ 编辑: coal511464 来自: 140.123.106.98 (03/21 17:58)
※ 编辑: coal511464 来自: 140.123.106.98 (03/21 17:58)
※ 编辑: coal511464 来自: 140.123.106.98 (03/21 17:59)
※ 编辑: coal511464 来自: 140.123.106.98 (03/21 18:00)
※ 编辑: coal511464 来自: 140.123.106.98 (03/21 18:02)
1F:→ KanoLoa:烂方法是把showImage也加进去一起做。 03/22 19:04
2F:→ coal511464:我觉得不应该用IDLE...可找不到方法可以Capture 03/22 19:07
3F:→ coal511464:然後一直跑FRAME 03/22 19:07
4F:→ coal511464:其实我後来发现 他在背景其实有跑 但是在Mainwin 就是 03/22 19:08
5F:→ coal511464:出不来 03/22 19:08
6F:→ coal511464:如果把 showImage 加到IDLE里头 会无法显示(但应该有跑 03/22 19:09
7F:→ KanoLoa:加一个强制更新UI , this.update() 03/24 01:23
8F:→ KanoLoa:也可以用BackgroundWorker去处理贴图更新事件 03/24 01:25