火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 597|回复: 1
打印 上一主题 下一主题

通过Opencv在MFC界面上显示视频的解决方案

[复制链接]

54

主题

371

帖子

3975

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3975
QQ
跳转到指定楼层
楼主
发表于 2023-9-16 17:01:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.介绍
官方例子中Opencv在MFC界面中显示视频的方案有个BUG,就是视频显示的时候会导致窗口不能移动!今天突然在看代码的时候突发灵感,实践了以下非常完美的解决了官方例子中的问题!
2.代码
<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 窗口程序类>
{
    变量 主窗口对象 <类型 = 我的主窗口>

    方法 启动方法 <公开 类型 = 整数>
    {
        主窗口对象.创建主窗口 ()
        返回 (1)
    }
}

# ===

类 我的主窗口 <基础类 = 窗口 注释 = "样例主窗口" @视窗.布局 = "client_size = \"753, 540\"" 标题 = "我的主窗口">
{
    变量 图片框_画面容器 <类型 = 图片框 隐藏值属性 = "0" @视窗.布局 = "id = 101\r\npos = \"13, 14, 728, 448\"">
    变量 按钮_选择视频文件并播放 <类型 = 按钮 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 102\r\npos = \"21, 478, 712, 48\""
            标题 = "选择视频文件并播放">
    变量 时钟1 <类型 = 时钟 隐藏值属性 = "0" @视窗.布局 = "id = 103\r\npos = \"661, 502, 32, 32\"">
    变量 m_video <类型 = CV视频>

    方法 时钟_周期事件 <接收事件 类型 = 整数 注释 = "每当经过了指定的时钟周期,将发送本事件.">
    参数 来源对象 <类型 = 时钟 注释 = "提供事件产生的具体来源对象">
    参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
    {
        如果 (来源对象 == 时钟1)
        {
            变量 frame <类型 = CV矩阵类>
            本对象.m_video.取当前帧 (frame)
            CV核心.显示图像 ("cvwin", frame)
        }
        返回 (0)
    }

    方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
    参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
    参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
    {
        如果 (来源对象 == 按钮_选择视频文件并播放)
        {
            变量 对话框对象 <类型 = 通用对话框 "类型" = 打开文件 过滤器 = "视频文件(*.mp4)|*.mp4">
            如果 (对话框对象.打开 (本对象))
            {
                本对象.m_video.打开视频 (对话框对象.文件名, )
            }
            本对象.时钟1.时钟周期 = 60
        }
        返回 (0)
    }

    方法 我的主窗口_创建完毕 <接收事件 类型 = 整数 注释 = "当本组件及其中所有子组件均被创建完毕后发送此事件.">
    参数 来源对象 <类型 = 我的主窗口 注释 = "提供事件产生的具体来源对象">
    参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
    {
        CV核心.创建CV窗口 ("cvwin", 本对象.图片框_画面容器.取用户区宽度 (), 本对象.图片框_画面容器.取用户区高度 (), 本对象.图片框_画面容器.取窗口句柄 ())
        返回 (0)
    }
}


回复

使用道具 举报

75

主题

703

帖子

4238

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
4238
QQ
沙发
发表于 2023-9-16 21:40:39 | 只看该作者
支持
欢迎加入火山安卓交流群:623136156
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-16 05:17 , Processed in 0.090488 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表