/*
这个类目前封装了三种采集卡的摄像头:两个模拟摄像头采集卡MV-750,MV-E8000;个数字摄像头采集卡MV-1300。
与一个学长共同完成,是完成的第一个感觉很满意的类,今天整理了一下发出来。
对外接口:载入,打开,关闭,拍照。
希望给对学习类封装的同学有点帮助。
采集卡、摄像头是北京维视的。
by l0g1n
CameraV1.h
*/
#pragma once
#include"stdafx.h"
#include <string>
using namespace std;
#include "HVDAILT.h"
#include "Raw2Rgb.h"
#include "HVDef.h"
#include "HVUtil.h"
#include "DVRSDK.H"
#include "DSStream.h"
#pragma comment(lib,"hvdailt.lib")
#pragma comment(lib,"raw2rgb.lib")
#pragma comment(lib,"HVUtil.lib")
#pragma comment(lib,"DVRSDK.lib")
#pragma comment(lib,"DSStream.lib")
class Camera
{
public:
Camera():m_pWindow(NULL),m_image_buffer(NULL),m_nCameraID(-1), m_nWindowID(0)
{}
~Camera();
public:
//传入参数,窗口显示所在类指针、窗口ID、摄像头通道号、摄像头名称
void Attach(CWnd* pWnd,int nWindowID,int m_CameraID,string CameraName);
bool open();
void close();
bool capture(char* s_pic_name);
bool capture(string s_pic_name);
bool capture(CString s_pic_name);
protected:
CWnd* m_pWindow;
char* m_image_buffer;
unsigned m_nWindowID;
int m_nCameraID;
protected:
void InitCamera(string& CameraName);
public:
static int CALLBACK SnapThreadCallback(HV_SNAP_INFO *pInfo); ///English: ///Chinese: 回调函数声明
afx_msg LRESULT OnSnapChange(WPARAM wParam, LPARAM lParam);
void HVGetDeviceInfo_Resolution();
HV_BAYER_LAYOUT HVGetDeviceInfo_Bayer_Layout();
void InitMV1300();
void InitMV750();
void InitMVE8000();
bool openMV1300();
bool openMV750();
bool openMVE8000();
void closeMV1300();
void closeMV750();
void closeMVE8000();
bool captureMV750(char* s_pic_name);
bool captureMV1300(char* s_pic_name);
bool captureMVE8000(char* s_pic_name);
private:
BITMAPINFO *m_pBmpInfo; ///English: ///Chinese: BITMAPINFO 结构指针,显示图像时使用
BYTE *m_pImageBuffer; ///English: ///Chinese: Bayer转换后缓冲区
BYTE *m_pRawBuffer; ///English: ///Chinese: 采集图像原始数据缓冲区
char m_chBmpBuf[2048]; ///English: ///Chinese: BIMTAPINFO 存储缓冲区,m_pBmpInfo即指向此缓冲区
int m_nMaxWid; ///English: ///Chinese: 分辨率最大宽度
int m_nMaxHei; ///English: ///Chinese: 分辨率最大高度
/*///English: ///Chinese: 颜色查找表*/
BYTE m_pLutR[256];
BYTE m_pLutG[256];
BYTE m_pLutB[256];
HV_BAYER_LAYOUT m_BayerType;
HHV m_hhv; ///English: ///Chinese: 数字摄像机句柄
HVSTATUS status; ///English: ///Chinese: 设备状态
string m_sCameraName;
};
//CameraV1.cpp
#pragma once
#include "stdafx.h"
#include "CameraV1.h"
const HV_BAYER_CONVERT_TYPE ConvertType = BAYER2RGB_NEIGHBOUR; ///English: ///Chinese: Raw2RGB算法
Camera::~Camera()
{
}
void Camera::InitCamera(string& CameraName)
{
if(CameraName