MFC/OpenCV读取摄像头
程序员文章站
2024-03-21 23:39:58
...
参考链接:
利用MFC和OpenCV构建GUI程序读取摄像头视频
OpenCV关于视频处理的学习(VideoCapture类)-在检测中一些必要的图像操作
1. 新建一个简单的基于对话框的MFC工程”VedioS”
2. 建立对话框资源
- 将”确认”的Caption改为”打开相机”
- 将”取消”的Caption改为”退出”
- 添加PICTURE控件,ID设置为 IDC_VEDIO_STATIC,Type设置为Rectangle,Color设置为Gray。
3.添加相应的处理函数
- 在VedioSDlg.h中添加OpenCV的头文件及命名空间,以及判断相机是否成功打开的flag。
#include <opencv2/opencv.hpp>
using namespace cv;
...
...
public:
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedOk();
bool flag; //判断相机或摄像头是否成功打开
在对应的cpp文件中进行初始化:
CVedioSDlg::CVedioSDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CVedioSDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
flag = FALSE;
}
- 在 VedioSDlg.cpp中将OpenCV读取的视频关联到Picture控件(OpenCV默认是弹出一个窗口播放读到的视频)
BOOL CVedioSDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
...
...
// TODO: 在此添加额外的初始化代码
namedWindow("VEDIO", WINDOW_AUTOSIZE);
HWND hwndShow = (HWND)cvGetWindowHandle("VEDIO");
//父窗口
HWND hParents = ::GetParent(hwndShow);
::SetParent(hwndShow, GetDlgItem(IDC_VEDIO_STATIC)->m_hWnd);
//函数原型:HWND SetParent(HWND hWndChild,HWND hWndNewParent),
//hWndChild:子窗口句柄。
//hWndNewParent:新的父窗口句柄。
//隐藏父窗口
::ShowWindow(hParents, SW_HIDE);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
- 添加”打开相机”的消息处理函数
void CVedioSDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CRect rect;
//获取picture控件ID
CWnd *pWnd = GetDlgItem(IDC_VEDIO_STATIC);
//获取picture控件大小
pWnd->GetClientRect(&rect);
int x = rect.Width();
int y = rect.Height();
VideoCapture capture(0); //0表示电脑摄像头,1表示外接摄像头
flag = capture.isOpened();
if (flag==false)
{
MessageBox(_T("未找到相机"),_T("提示"),MB_OK | MB_ICONERROR);
return;
}
while (flag)
{
Mat frame;
capture >> frame;
Mat dst;
resize(frame, dst, Size(x, y), 0, 0, 1);
imshow("VEDIO", dst);
waitKey(30);
}
CDialogEx::OnOK();
}
- 添加”退出”的消息处理函数
void CVedioSDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
flag = false;
CDialogEx::OnCancel();
}
上一篇: Python在工作中的应用4:数据合并
推荐阅读
-
MFC/OpenCV读取摄像头
-
Opencv-图像基本操作(读取,融合,边界填充等)
-
OpenCV2.x使用cvSetCaptureProperty定位后读取的帧重复 博客分类: opencv opencv视频分析
-
OpenCV2.x使用cvSetCaptureProperty定位后读取的帧重复 博客分类: opencv opencv视频分析
-
MFC 利用opencv实现视频播放
-
VS2013 / MFC + OpenCV 2.4.9实现视频的播放暂停和结束
-
opencv 读取摄像头数据 博客分类: 计算机视觉java openvc
-
opencv读取图像数据的方式总结
-
opencv学习—读取并且显示图像
-
python使用opencv读取图片的实例