我想实现的功能是:
1、在对话框程序上实现视频流读取、播放(来自摄像头或者视频文件)
2、在正在播放的视频上可以拖出一个矩形选中某个区域,该操作不影响视频流的正常播放
3、点击“拍照”(或者“截图”)按钮,矩形范围内的视频画面被保存为一张图片在上述一系列的操作中,视频一直是正常获取、播放的。在我自己的实现中,我采用了OpenCV,每一帧都显示在了Picture控件上来实现播放,矩形(我用的是CRectTracker)的拖放选取的过程中,画面闪烁非常严重。整个程序也很卡。求更好的实现思路,比如用到的技术,类库等。谢过。视频技术视频流图片OpenCV

解决方案 »

  1.   

    视频要看是否是DirectX播放的,最好是OpenCV,OpenCV有个Optimization的dll,你加了没?
      

  2.   

    我用的是OpenCV 版本是2.4.3,以Optimization为关键字,搜索了一下,没这个dll啊,请问这个dll全名叫什么呢?
      

  3.   

    先给你说下,我的思路,首先 你想要截图的话,非常简单,2种,一种是 对 视频帧数据进行操作,从视频帧中拿到你 圈放的数据(根据坐标,然后2 个for 循环,将数据放到 buff 里面,)拿到buff 数据后,利用加上 BMPHEADER ,(也就是BMP 数据头,)直接保存到本地 就是一张BMP 的图片。
    第二种 方法是  ,从 内存中读取数据,直接利用MFC 的API 函数 就能办到,我曾经在CSDN上发过这样的程序,或者你 搜下 截图。第一种 方法 ,为了防止 视频 ,卡屏的现象 ,需要保存 一个变量 ,这个 变量 记录下 点击截图按钮的时候的帧数,和截图的坐标大小, 视频 则继续播放,在别的地方(可以在线程中处理或者其他) 处理 截图后的数据。第二种方法,基本上不会 卡屏,一直会很顺利,但是,如果在截图的时候切换屏幕,可能会出现截取的图像不对的现象。