MFC+OPENCV实现JPEG图片的播放

简介: 用vc6.0进行开发真的有点蛋疼,在实现jpeg图片的播放,vc6.0的picture控件居然只支持位图>_< 开始想法是在程序中加一个编码过程,边读图边解码边显示,先将JPEG图片转化为位图再显示,但代价是在OPENCV中的自带的函数支持编解码,但要先写下来,所以读写再度时间较长无法满足实时性的要求; 第二种方法是用VTK中带的vtkJPEGReader类,

用vc6.0进行开发真的有点蛋疼,在实现jpeg图片的播放,vc6.0的picture控件居然只支持位图>_<
开始想法是在程序中加一个编码过程,边读图边解码边显示,先将JPEG图片转化为位图再显示,但代价是在OPENCV中的自带的函数支持编解码,但要先写下来,所以读写再度时间较长无法满足实时性的要求;
第二种方法是用VTK中带的vtkJPEGReader类,在MFC中创建一个VTK的自定义控件,后读入显示,但结果是读入显示太慢,屏幕会一闪一闪的,速度太慢,查资料说要用双缓冲的技术;
后继续找资料,找到了cvvImage的类,这个类功能有点强;
Opencv vc6.0的配置直接网上搜吧,这里不在累述
建立一个界面,如图:
这里写图片描述
简单地包含一个Picture的控件和一个按钮控件
设置Picture控件的ID为:IDC_Picture
往Dlg.c文件中加入opencv的头文件:

#include "cv.h"
#include "highgui.h"

在Debug运行时还应加入highgui100.dll到目录下
接着对按钮继续消息相应函数的编写:

    IplImage *image=NULL; //原始图像
    char filename[128];
    for(int i=2;i<300;i++)
    {
        sprintf(filename,"5//%d.jpg",i);//""中间填写图片的路径
        //if(image) 
        //  cvReleaseImage(&image);
        image = cvLoadImage(filename); //显示图片
        cvWaitKey(3);
        DrawPicToHDC(image, IDC_Picture);
        Sleep(30);
        cvReleaseImage(&image);
    }

在MFC的框架下cvWaitKey();这一函数无法延时;
用for(;;)循环也不能进行延时;
经测试Sleep()可以进行延时

void CPicturesDlg::DrawPicToHDC(IplImage *img, UINT ID)
{
    CDC *pDC = GetDlgItem(ID)->GetDC();
    HDC hDC= pDC->GetSafeHdc();
    CRect rect;
    GetDlgItem(ID)->GetClientRect(&rect);
//  cvWaitKey(30000000);
    CvvImage cimg;
    cimg.CopyOf(img);
    cimg.DrawToHDC(hDC,&rect);
    //cvWaitKey(30000000);
    ReleaseDC(pDC);
}

结果是应该能达到二十多帧,
结果:
这里写图片描述
双缓冲的技术可能马上就会用到>_<
除非有特殊要求,劲量还是不要用VC6.0
这里写图片描述

目录
相关文章
|
1月前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
33 2
|
3月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理
OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理
33 0
|
3月前
|
存储 编解码 监控
OpenCV这么简单为啥不学——2.1、imwrite逐帧保存图片
OpenCV这么简单为啥不学——2.1、imwrite逐帧保存图片
47 0
|
3月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
48 0
|
11天前
|
前端开发 API 计算机视觉
opencv绘制基本图形,在图片上添加文字
opencv绘制基本图形,在图片上添加文字
|
4月前
|
计算机视觉 Python 索引
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
|
22天前
|
机器学习/深度学习 算法 自动驾驶
opencv python 图片叠加
【4月更文挑战第17天】
|
3月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.10、addWeighted设置图片透明度
OpenCV这么简单为啥不学——1.10、addWeighted设置图片透明度
28 0
|
3月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.2、图片截取(数组截取)
OpenCV这么简单为啥不学——1.2、图片截取(数组截取)
18 0
|
5月前
|
机器学习/深度学习 算法 计算机视觉
python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作
python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作