80 lines
1.7 KiB
C++
80 lines
1.7 KiB
C++
#ifndef __SV_CAMERA__
|
|
#define __SV_CAMERA__
|
|
|
|
#include "opencv2/opencv.hpp"
|
|
|
|
namespace sv
|
|
{
|
|
|
|
enum class CameraType : int
|
|
{
|
|
// 未知相机
|
|
NONE = 0X00001000,
|
|
// 标准opencv框架下的相机
|
|
V4L2CAM = 0X00001001,
|
|
WEBCAM = 0X00001002,
|
|
// 视频文件
|
|
VIDEOFILE = 0X00002001,
|
|
// 普通流媒体相机
|
|
STREAMING = 0X00004001,
|
|
// 普通的MIPI-CSI相机
|
|
MIPI = 0X00008001,
|
|
// 进行了传输优化适配的相机
|
|
G1 = 0X00010001,
|
|
Q10 = 0X00010002,
|
|
GX40 = 0X00010003,
|
|
MC1 = 0X00010004,
|
|
// 虚拟的相机设备 主要仿真接入
|
|
VIRTUAL = 0X00020001,
|
|
};
|
|
|
|
class Camera
|
|
{
|
|
private:
|
|
void *dev;
|
|
|
|
public:
|
|
// 构建时根据相机类型实例化对应的相机类
|
|
// timeOut: 相机连接超时时间;超过该时间没有读取到新的帧,则认为相机失去连接 单位ms
|
|
Camera(CameraType type, int timeOut = 500);
|
|
|
|
// 基本配置 必须调用下述的一个接口后才能open
|
|
bool setStream(const std::string &ip, int port);
|
|
bool setName(const std::string &name);
|
|
bool setIndex(int index);
|
|
// 基础功能
|
|
bool open(void);
|
|
bool read(cv::Mat &image);
|
|
bool readNoBlock(cv::Mat &image);
|
|
void release(void);
|
|
|
|
// 属性配置
|
|
void setWH(int width, int height);
|
|
void setFps(int fps);
|
|
void setBrightness(double brightness);
|
|
void setContrast(double contrast);
|
|
void setSaturation(double saturation);
|
|
void setHue(double hue);
|
|
void setExposure(double exposure);
|
|
|
|
// 获取属性
|
|
bool isActive(void);
|
|
CameraType getType(void);
|
|
std::string getName(void);
|
|
|
|
int getW(void);
|
|
int getH(void);
|
|
int getExpectFps(void);
|
|
double getFps(void);
|
|
double getBrightness(void);
|
|
double getContrast(void);
|
|
double getSaturation(void);
|
|
double getHue(void);
|
|
double getExposure(void);
|
|
|
|
~Camera();
|
|
};
|
|
|
|
}
|
|
#endif
|