MFC中基于OpenCV实现Picture Control控件成像方法

2023-05-16

MFC中基于OpenCV实现Picture Control控件成像方法有两种,一种是OpenCV2.2以前版本的绘制,另外一种是OpenCV2.2以后版本的绘制。

(1)在OpenCV2.2之前的版本利用CvvImage.h,CvvImage.cpp中的DrawToHDC函数实现。

(2)在OpenCV2.2之后的版本利用namedwindow创建窗户与控件的窗口子父绑定实现。

1.利用CvvImage.h,CvvImage.cpp中的实现

capture = cvCreateCameraCapture(0);//读入摄像头
	if (capture==0)
	{
		AfxMessageBox("读入摄像头错误");
		return;
	}
	frame = cvQueryFrame(capture);//获取摄像头视频帧
	
	pDc = GetDlgItem(IDC_PIC_STATIC)->GetDC();//获得Picture control控件CDC指针
	GetDlgItem(IDC_PIC_STATIC)->GetClientRect(rect);//获得Picture control控件区域大小
	hDc = pDc->GetSafeHdc();//获得Picture control控件的DC句柄

	CvvImage m_CvvImage;
	m_CvvImage.CopyOf(frame,1);//深拷贝
	m_CvvImage.DrawToHDC(hDc,&rect);//将视频帧绘制到Picture control控件

	ReleaseDC(pDc);
	
	SetTimer(1,25,NULL);


}


void CFull_Video_GenerationDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	frame = cvQueryFrame(capture);

	pDc = GetDlgItem(IDC_PIC_STATIC)->GetDC();
	GetDlgItem(IDC_PIC_STATIC)->GetClientRect(rect);
	hDc = pDc->GetSafeHdc();

	CvvImage m_CvvImage;
	m_CvvImage.CopyOf(frame,1);
	m_CvvImage.DrawToHDC(hDc,&rect);

        ReleaseDC(pDc);

	CDialogEx::OnTimer(nIDEvent);
}

2.利用namedwindow窗口绑定实现

void CFull_Video_GenerationDlg::OnBnClickedPlay()
{
	// TODO: 在此添加控件通知处理程序代码
	VideoCapture Matcapture(0);
	GetDlgItem(IDC_PIC_STATIC)->GetClientRect(rect);//获取Picture control控件区域大小
	namedWindow("aaa",CV_WINDOW_NORMAL);//创建窗口 正常显示
	resizeWindow("aaa",rect.Width(),rect.Height());//调整窗口大小为Picture control控件区域大小

	HWND hWnd = (HWND)cvGetWindowHandle("aaa");//获得创建的窗口句柄
	HWND hParent = ::GetParent(hWnd);//获得其父句柄
	::SetParent(hWnd, GetDlgItem(IDC_PIC_STATIC)->m_hWnd);//设置创建窗口的父窗口为Picture control控件
	::ShowWindow(hParent, SW_HIDE);//将父窗口及其子窗口进行隐藏

	while (1)
	{
		Matcapture>>srcImage;
		imshow("aaa",srcImage);
		if (waitKey(10)>=0)
		{
			break;
		}
		
	}
	
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC中基于OpenCV实现Picture Control控件成像方法 的相关文章

随机推荐

  • 为什么说TCP是面向流的协议?而UDP是面向数据报的协议?

    问题 经常能听人说 xff1a TCP是面向流的协议 xff0c 而UDP是面向数据报的协议 从字面理解上来说 xff0c 似懂非懂 每次都不是能彻底明白什么是流 xff0c 什么是数据报 xff1f 在大家眼里 xff0c 网络报文都是I
  • 【面试题】N级台阶(比如100级),每次可走1步或者2步,求总共有多少种走法?

    走台阶算法 xff08 本质上是斐波那契数列 xff09 在面试中常会遇到 xff0c 描述就如题目那样 xff1a 总共100级台阶 xff08 任意级都行 xff09 xff0c 小明每次可选择走1步 2步或者3步 xff0c 问走完这
  • Java访问权限修饰符的区别

    Java有四种访问权限 xff0c 其中三种有访问权限修饰符 xff0c 分别为private xff0c public和protected xff0c 还有一种不带任何修饰符 xff1a private Java语言中对访问权限限制的最窄
  • “二分查找”算法的时间复杂度

    算法的时间复杂度无非就是for while等包含起来的基本运算单元的循环次数 1 二分查找 二分查找 xff08 binary search xff09 xff0c 也称作折半查找 xff08 half interval search xf
  • ORA-12547与在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1解决方案

    在 root 下执行 Oracle 程序时找不到 libclntsh so 11 1时 如图所示libclntsh so 11 1 61 gt not found 解决方法 xff1a locate libclntsh so 11 1 找到
  • 【D3.js】力导向布局 + 圆形图片展示的人物关系

    前言 使用d3的力学图 xff08 力导向图 xff09 与生活中常见的人物关系图结合 xff0c 已经有了很好的例子 xff1a D3 js 进阶系列 2 0 力学图 43 人物关系图 xff0c 博主实现了下面这种样式 xff0c 已经
  • 【Android】adb 查看所有程序包名

    adb shell pm span class hljs keyword list span packages 列出所有的包名 adb shell pm list packages span class hljs label package
  • 【算法】大数乘法问题及其高效算法

    题目 编写两个任意位数的大数相乘的程序 xff0c 给出计算结果 比如 xff1a 题目描述 xff1a 输出两个不超过100位的大整数的乘积 输入 xff1a 输入两个大整数 xff0c 如1234567 和 123 输出 xff1a 输
  • 【算法】如何判断链表有环

    如何判断单链表是否存在环 有一个单向链表 xff0c 链表当中有可能出现 环 xff0c 就像题图这样 如何用程序判断出这个链表是有环链表 xff1f 不允许修改链表结构 时间复杂度O n xff0c 空间复杂度O 1 方法一 穷举遍历 方
  • 【Android】移动端接入Cronet实践

    移动端接入Cronet实践 QUIC协议获取Chromium源码编译CronetAndroid iOS buildsDesktop builds targets the current OS Running the ninja files生
  • Linux系统下安装Java环境

    目录 测试环境 下载JDK 终端模拟软件 安装前准备 tar包的安装方法 tar包的卸载 rpm包的安装方法 rpm包的卸载 测试环境 LInux系统版本 xff1a CentOS 7 64位 终端模拟软件 xff1a Xshell 6 J
  • 【Hexo】Hexo个人博客绑定域名

    Hexo个人博客绑定域名 当我们在用hexo搭建了个人博客之后 xff0c 用username github io访问难免有些奇怪 xff0c 下面就花3分钟时间对如何绑定个人域名进行描述 我这边是在阿里云买的一个域名 xff0c ycbl
  • 生产者消费者的代码实现

    当消费者获得的数据为大写字母时 xff0c 则把大写字母转换成小写字母 xff0c 并显示 xff1b 当消费者获得的数据为小写字母时 xff0c 则把小写字母转换成大写字母 xff0c 并显示 xff1b 当消费者获得的数据为字符0 1
  • 基于RobHess的SIFT图像拼接知识点随笔

    1 SIFT算法具有尺度不变性在于构建的高斯尺度空间 xff1b 2 SIFT算法具有旋转不变性在于特征方向向量 xff1b 3 K d数以图像特征点的128维特征描述子均值为依据进行划分 构建 xff1b 4 特征点匹配是一个图像的所有特
  • 最小二乘法及OpenCv函数

    1 最小二乘法 我们以最简单的一元线性模型来解释最小二乘法 什么是一元线性模型呢 xff1f 监督学习中 xff0c 如果预测的变量是离散的 xff0c 我们称其为分类 xff08 如决策树 xff0c 支持向量机等 xff09 xff0c
  • Linux服务器网络不通情况分析以及常见检查方法

    在实际运维过程中 xff0c 经常会遇到网路不通的问题 xff0c 一般此类网络不通的问题都是业务端到端的排查 本文从后端linux服务器端自查是否服务器问题 通过多年的运维经验总结 xff0c 服务器端问题导致网络不通 xff0c 大致分
  • RANSAC算法实现去除误匹配并计算拼接矩阵-随笔

    1 RANSAC算法实现去除误匹配并计算拼接矩阵流程 1 从样本集中随机抽选一个RANSAC样本 xff0c 即4个匹配点对 xff08 至少4个匹配点对 xff0c 才能计算出3 3变换矩阵 xff09 xff1b 2 计算当错误概率为0
  • linux c++ 服务器端开发面试必看书籍

    由于很多朋友希望加入到Linux c 43 43 服务器端开发的队伍中 xff0c 本人就结合自己的面试经历并整理了自己阅读的相关书籍 xff0c 同大家分享 xff0c 一起进步 人个认为以下是进入这个方向的必看书籍 xff0c 各系列难
  • C++进阶—>const、define和enum的区别和用途

    1 区别 这三种都可以定义常量 define是宏定义 xff0c 编译器不对其进行错误检查 xff0c 在预编译阶段处理 xff0c 没有作用域限制属于全局常量 xff0c 在程序中编译器会对定义的常量名以数值进行替换 xff0c 且每次替
  • MFC中基于OpenCV实现Picture Control控件成像方法

    MFC中基于OpenCV实现Picture Control控件成像方法有两种 xff0c 一种是OpenCV2 2以前版本的绘制 xff0c 另外一种是OpenCV2 2以后版本的绘制 xff08 1 xff09 在OpenCV2 2之前的