最近写的标定程序,想功能强大些,可以直接拍摄图像的那种,所以就索性把视频读取给加进去了。公司做的视频都是利用视频采集卡-ok卡读取数据了,所以也就跟同组人要了个封装好的okcamera类做视频采集了。
开始视频卡读出的只是图像像素区的数据,当然在显示的时候需要加上文件信息头信息,这个经过了大师兄的指点,就很容易搞定了。而且保存的时候也是需要加上文件头,这两个都涉及到申请内存和初始化一些数据的,该赋的值赋上了就ok了。 下面比较麻烦的是在实时显示的时候,我是用setTimer函数,一段时间刷新界面的,在onpain里重绘图像,这样做,出现了两个问题,使用Invalidate(false)后,视频上会有一道白杠在闪,第二个问题时旁边操作区的按钮也跟着闪。 {dy}个问题,查了下,闪屏实质是背景与前景不断更换的频率造成的,索性我就把brush背景那段代码归到了读图像里面,视频时不使用brush刷新背景,这样就解决了。 第二个问题,使用CWND里的InvalidateRect()只刷新我们需要的Rect里就行,这里只刷新picture控件里。 void CliyyCalibrateDlg::OnTimer(UINT_PTR nIDEvent) InvalidateRect(&pRc,false); CDialog::OnTimer(nIDEvent); |