目录
一、自己写的:打开和关闭相机并且将其全屏
1、H文件中:
#include <opencv.hpp>
using namespace cv;
//相机
public:
bool m_bWhile_camera; //相机里面while循环需要的变量
Mat m_mat ; //循环读取一帧
VideoCapture m_videoCapture; //VideoCapture产生的变量
int OpenOrCloseCamera(int); //XZY:摄像头:打开或者关闭;参数1:【0:关闭,1:打开】
1、cpp文件中:
//*********************************************************************************************************************
//名称:OpenOrCloseCamera
//功能:摄像头:打开或者关闭;
//参数:参数1:【0:关闭,1:打开】
//返回值:
//*********************************************************************************************************************
//XZY:初始化摄像头
int CVideoControl::OpenOrCloseCamera(int e1)
{
if (e1==0)
{
m_bWhile_camera = false; //关闭相机while循环
cv::destroyWindow("frame"); //窗口一定要关闭,否则结束时候会出现断点
m_videoCapture.release(); //释放
m_mat.release(); //释放
}
else if (e1==1)
{
m_bWhile_camera = true;
m_videoCapture = VideoCapture(0); //打开默认相机
if (!m_videoCapture.isOpened()) //判断是否出错
{
return false;
}
namedWindow("frame", WND_PROP_FULLSCREEN); //相机的视频全屏
setWindowProperty("frame", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
m_videoCapture.set(CAP_PROP_FRAME_WIDTH, 1920);
m_videoCapture.set(CAP_PROP_FRAME_HEIGHT, 1080);
while (m_bWhile_camera)
{
m_videoCapture >> m_mat; //输出当前帧数
//判断是否读完
if (!m_mat.empty())
{
imshow("frame", m_mat);
waitKey(30); //延时30毫秒:一定要否则灰屏
}
}
}
return 0;
}