#pragma once #include "../config/bean/ExtCfg.h" #include "../config/bean/CameraCalibrationCfg.h" #include "turbojpeg.h" #include #include class PointImageShowInfo { public: PointImageShowInfo() :m_ShowTex(0) { m_IsColor = false; } ~PointImageShowInfo(); void Init(cv::Mat image, unsigned char* imageData); void Init(); void Update(); uint32_t GetTex() { return m_ShowTex; } public: int m_Width; int m_High; float m_PixelRatio; cv::Mat m_ImageMat; bool m_IsColor; private: unsigned char* m_ImageData; uint32_t m_ShowTex; }; class HBDCamera { public: HBDCamera(); virtual ~HBDCamera(); virtual bool Init() { return false; } virtual void StartUp(); virtual bool IsConnect() { return false; } void SetDemandCatpure(bool demand) { m_DemandFlag = demand; } bool GetDemandCatpure() { return m_DemandFlag; } virtual void SetExposureAutoByCfg() {} virtual void SetGainAutoByCfg() {} virtual void SetExposureTimeByCfg() {} virtual void SetFrameRateEnable() {} virtual void SetFrameRate() {} virtual unsigned int GetShowImage() = 0; virtual unsigned int GetShowImage(unsigned char * data, unsigned long size, int *width, int *height); virtual bool GenLogImage(void) { return false; } unsigned char * GetLogImage(void) { return m_LogImage; } unsigned int GetLogImageSize(void) { return m_LogImageSize; } float GetAspect() { return m_Aspect; } //unsigned int GetLogImageWidth() { return m_ImgWidth; } //unsigned int GetLogImageHeight() { return m_ImgHeight; } virtual bool GetRawImage(unsigned char* img); void GetRemoteShowImageMat(cv::Mat& mat) { EnterCriticalSection(&m_OriginalDataCS); m_ShowImage.copyTo(mat); LeaveCriticalSection(&m_OriginalDataCS); } void GetOriginSize(int& width, int& height, int &datasize) { EnterCriticalSection(&m_OriginalDataCS); width = m_OriginalWidth; height = m_OriginalHeight; datasize = m_OriginalDataSize; LeaveCriticalSection(&m_OriginalDataCS); } protected: virtual bool ConnectCamera() { return false; } virtual void GenTex(uint32_t *tex, unsigned int w, unsigned int h, void * data) {} virtual void StopCamera(); static DWORD WINAPI CatpureProc(HBDCamera* _this); virtual void CatpureRun() = 0; virtual void CreateTestImage() {} public: bool m_ShowFlag; PointImageShowInfo* m_PointImage; int m_LastMouRefImgPosX; int m_LastMouRefImgPosY; protected: bool m_IsColor; bool m_DemandFlag; unsigned char* m_OriginalData; uint32_t m_OriginalDataSize; uint32_t m_OriginalWidth; uint32_t m_OriginalHeight; CRITICAL_SECTION m_OriginalDataCS; bool m_ImageChanged; unsigned char* m_LogImage; unsigned long m_LogImageSize; unsigned int m_LogImgWidth; unsigned int m_LogImgHeight; float m_Aspect; uint32_t m_LogGLTex; uint32_t m_GLTex; unsigned int m_ImgWidth; unsigned int m_ImgHeight; tjhandle m_tjinstance; ExtCfg* m_ExtCfg; CameraCalibrationCfg* m_CameraCalibrationCfg; bool m_RunFlag; HANDLE m_CatpureThread; cv::Mat m_ShowImage; };