C++封装opencv读取视频与摄像头的库
来源:互联网 发布:java dbconnection 编辑:程序博客网 时间:2024/05/17 16:02
GetImage.h
#ifndef _GET_IMAGE_H_#define _GET_IMAGE_H_#include "opencv2/highgui.hpp"using namespace cv;#define FILENAMELEN 1000typedef enum enGetImgMode{ GET_IMG_MODE_RECORD, GET_IMG_MODE_CAM}GET_IMG_MODE_E;typedef enum enGetImgWorkMode{ GET_IMG_WORK_MODE_ORC, //获取原图 GET_IMG_WORK_MODE_RESIZE_YUV420, //获取缩放后的YUV420图 GET_IMG_WORK_MODE_RESIZE_GRAY //获取缩放后灰度图}GET_IMG_WORK_MODE_E;class GetImage{public: GetImage(); GetImage(GET_IMG_MODE_E mode, GET_IMG_WORK_MODE_E workMode, int width, int height, char* pVideoPath); ~GetImage(); int Work(Mat** ppstImage);public: GET_IMG_MODE_E m_Mode; GET_IMG_WORK_MODE_E m_WorkMode; char m_VideoPath[FILENAMELEN]; int m_Width; int m_Height; VideoCapture m_Capture; Mat m_OrcImg; Mat m_ScaleImg; Mat m_ScaleGrayImg;};#endif
GetImage.cpp
#include "GetImage.h"#include "opencv2/video.hpp"GetImage::GetImage(){ m_Mode = GET_IMG_MODE_CAM; m_WorkMode = GET_IMG_WORK_MODE_ORC; memset(&m_VideoPath[0], 0, sizeof(m_VideoPath[0])*FILENAMELEN); m_Width = 1280; m_Height = 720; m_Capture.open(0); m_ScaleImg.create(m_Width, m_Height, CV_8UC3); m_ScaleGrayImg.create(m_Width, m_Height, CV_8UC1);}GetImage::GetImage(GET_IMG_MODE_E mode, GET_IMG_WORK_MODE_E workMode, int width, int height, char* pVideoPath){ m_Mode = mode; m_WorkMode = workMode; m_Width = width; m_Height = height; if (m_Mode == GET_IMG_MODE_RECORD) { memcpy(&m_VideoPath[0], pVideoPath, strlen(pVideoPath)); m_VideoPath[strlen(pVideoPath)] = '\0'; m_Capture.open(m_VideoPath); } else if (m_Mode == GET_IMG_MODE_CAM) { m_Capture.open(0); } m_ScaleImg.create(m_Width, m_Height, CV_8UC3); m_ScaleGrayImg.create(m_Width, m_Height, CV_8UC1);}GetImage::~GetImage(){ m_Capture.release();}int GetImage::Work(Mat** ppstImage){ m_Capture >> m_OrcImg; if (m_OrcImg.empty()) { (*ppstImage) = NULL; return 0; } //图像缩放 if (m_WorkMode == GET_IMG_WORK_MODE_ORC) { *ppstImage = &m_OrcImg; return 0; } else if (m_WorkMode == GET_IMG_WORK_MODE_RESIZE_YUV420) { resize(m_OrcImg, m_ScaleImg, Size(m_Width, m_Height), (0, 0), (0, 0), INTER_AREA); *ppstImage = &m_ScaleImg; return 0; } else if (m_WorkMode == GET_IMG_WORK_MODE_RESIZE_GRAY) { resize(m_OrcImg, m_ScaleImg, Size(m_Width, m_Height), (0, 0), (0, 0), INTER_AREA); //转换为灰度图像 cvtColor(m_ScaleImg, m_ScaleGrayImg, CV_BGR2GRAY); *ppstImage = &m_ScaleGrayImg; return 0; } return 0;}
阅读全文
0 0
- C++封装opencv读取视频与摄像头的库
- opencv读取视频与摄像头
- C/C++ OpenCV读取视频与调用摄像头
- 【OpenCV学习笔记】四、摄像头/视频的读取与写入
- opencv:摄像头和视频的读取
- OpenCV从摄像头读取视频
- opencv学习笔记(三)-读取视频与摄像头
- opencv读取视频,摄像头,保存视频代码
- OpenCV中用于摄像头视频读取的函数说明
- OpenCV中用于摄像头视频读取的函数说明
- 使用openCV读取视频或摄像头
- 利用opencv打开摄像头读取视频
- Opencv读取视频和打开摄像头
- Opencv 读取摄像头和视频数据
- opencv 读取视频、打开摄像头、写入视频文件
- opencv读取视频和摄像头常见问题
- opencv(2)---摄像头/视频读取_写入
- opencv 读取视频、打开摄像头、写入视频文件
- 使用Nginx做反向代理时,如何查看web请求被落地到哪台服务器
- nodejs深入浅出pdf
- 如何对项目时间进行有效管理
- web技能清单
- JAVA操作JSON就是如此简单
- C++封装opencv读取视频与摄像头的库
- dd 命令详解
- 第 四 部分 高级设计分析技术 第15章 动态规划
- WPF进程接收启动参数
- UE4 渲染优化
- js日期增加指定月份
- Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(二)安装 nodejs 环境以及 vue-cli 构建初始项目
- Mac上搭建直播服务器Nginx+rtmp
- PAT乙级解集