06使用了库UserInterface,在cvsharp4里面没有,从之前的测试来看,该例程可以在4版本中重现,由于没有感兴趣的cv函数,没有测试。
该例程cv没有太多学习内容,但觉得用的BackgroundWorker很好。
微软就BackgroundWorker类的功能有这么一个描述:BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(UI)停止响应的耗时操作(比如文件下载数据库事务等),并且想要一个响应式的UI来反应当前耗时操作的进度
界面上面一个start 一个stop,可以打开avi文件和摄像头
类数据成员
private PictureBoxIpl _pictureBoxIpl1;//启动后在flowLayoutPanel1添加。
private BackgroundWorker _worker;//在启动按钮中new
对启动按钮
主要功能是监测_worker是否已经创建,如存在,则直接返回;如无
则根据文件或摄像头选择的不同建立对avi和摄像头的DoWork的响应函数
并同时建立ProgressChanged和RunWorkerCompleted的响应函数
并执行RunWorkerAsync
运行逻辑:启动后,首先启动对应的dowork,这里将首先打开摄像头/avi,并得到对应fps,读取响应内容到mat,然后
调用_worker.ReportProgress(0, image);
该函数将会导致workerProgressChanged被调用,workerProgressChanged函数把mat写到PictureBoxIpl上面,实现界面变换。
执行完毕后返回dowork,执行与fps相对应的延时。Thread.Sleep(interval);