本文共 1514 字,大约阅读时间需要 5 分钟。
①Camera.h
#pragma once#include "afxwin.h"#include "Resource.h"#include "opencv.hpp"#include "videoio.hpp"#include "CvvImage.h"using namespace std;using namespace cv;class Camera{public: Camera(); ~Camera();public: CWnd *m_pCWnd;//相机:窗口类指针 HWND m_HWND;//相机:窗口类句柄 bool m_bIsCanPlay=false;//相机是否能够播放 VideoCapture m_videoCapture;public: //相机:在picture上面显示相机画面 void CameraPlayOnPicture();};
①Camera.cpp
#include "stdafx.h"#include "Camera.h"Camera::Camera(){ }Camera::~Camera(){}void Camera::CameraPlayOnPicture(){ //测试:此地方不使用while if (m_bIsCanPlay) { if (!m_videoCapture.isOpened()) { m_videoCapture.open(0); }; Mat frame; m_videoCapture >> frame; IplImage* pFrame = (IplImage *)&IplImage(frame); //IplImage* 与Mat 格式相互转换:Mat转换为IplImage CDC *pCDC = AfxGetApp()->GetMainWnd()->GetDlgItem(IDC_camera)->GetDC(); //获得控件设备上下文指针,IDC_CAMERA为控件的ID HDC hDC = pCDC->GetSafeHdc(); //转换为句柄 CRect rect; AfxGetApp()->GetMainWnd()->GetDlgItem(IDC_camera)->GetClientRect(&rect); //获得控件的位置 AfxGetApp()->GetMainWnd()->GetDlgItem(IDC_camera)->MoveWindow(0, 0, 1920, 1080); CvvImage cimg; cimg.CopyOf(pFrame); cimg.DrawToHDC(hDC, &rect); //显示图像 if (m_pCWnd == NULL) { m_pCWnd = AfxGetApp()->GetMainWnd()->GetDlgItem(IDC_camera);//找到IDC_inVideo控件 } if (m_HWND == NULL) { m_HWND = m_pCWnd->GetSafeHwnd();//得到窗口指针句柄 } ReleaseDC(m_HWND, hDC); //CDC类在用完后记得释放 }}
转载地址:http://hwsq.baihongyu.com/