VideoCapture.h
上传用户:czshopping
上传日期:2022-05-22
资源大小:5430k
文件大小:3k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. // VideoCapture.h: interface for the CVideoCapture class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_VIDEOCAPTURE_H__FE7832C0_025A_11D5_9451_00E04C66EADC__INCLUDED_)
  5. #define AFX_VIDEOCAPTURE_H__FE7832C0_025A_11D5_9451_00E04C66EADC__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <vfw.h>
  10. #include <comdef.h>
  11. #include "MoveTrace.h"
  12. class CVideoCapture  
  13. {
  14. public:
  15. friend LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd,  LPVIDEOHDR lpVHdr);
  16. friend LRESULT FAR PASCAL VideoCallbackProc(HWND hWnd,  LPVIDEOHDR lpVHdr);
  17. public:
  18. CVideoCapture();
  19. virtual ~CVideoCapture();
  20. BOOL SetOverlay(bool bOverlay); //是否允许画图
  21. void SetOverlayShape(int nShape); //设置Overlay形状0-椭圆 1-圆 2-矩形
  22. void SetOverlayColor(int nColor); //设置Overlay颜色0-红色 1-绿色 2-蓝色
  23. BOOL SetPreviewRate(int rate=30);
  24. BOOL CaptureInit(HWND hwndParent);
  25. void CaptureEnd();
  26. BOOL EnableVideo(long nDriver);
  27. BOOL EnableAnyVideo();
  28. void DisableVideo();
  29. BOOL StretchVideo(BOOL bStretch);
  30. long GetVideoDriverCount(); //返回可用设备数
  31. BSTR GetDriverName(long nDriver);
  32. long GetCurrentDriver(); //获取当前设置的设备号
  33. BOOL SetVideoFormat(int Width=320,int Height=240);
  34. void GetVideoFormat();
  35. int GetVideoWidth(); //视频宽度
  36. int GetVideoHeight(); //视频高度
  37. void MoveWindow(int x,int y,int nWidth,int nHeight);
  38. void ShowVideoFormatDialog();
  39. void ShowVideoSourceDialog();
  40. BOOL GrabVideo(unsigned char *pImageData);
  41. BOOL m_bStorageData;//要求保存扑捉
  42. public:
  43. void SaveImage(LPVIDEOHDR lpVHdr);
  44. void OverlayDraw(RECT rect); //画图
  45. BOOL WriteAsBMP(char* szFileName,unsigned char* pImgData,int nWidth,int nHeight);
  46. //BOOL WriteAsJPG(char *szFileName, BYTE *pImgData, int nWidth, int nHeight, short shQuality);
  47. void GetImage(unsigned char *pImageData);
  48. CMoveTrace m_MoveTrace;
  49. private:
  50. BOOL ConnectDev(long DriverId=-1);
  51. BOOL SetScrollPos(LPPOINT pos);
  52. BOOL Preview(BOOL onoff);
  53. void DisConnectDev();
  54. BOOL InitVideoBuffer();
  55. private:
  56. int m_iHeight;
  57. int m_iWidth;  //视频的宽高
  58. int m_iConnectedDriverID;  //当前设置的设备号
  59. BOOL m_bHasOverlay;  //硬件是否支持Overlay
  60. int m_PreViewRate; //预揽帧数
  61. int m_bitCount;  //扑捉的图片颜色位数
  62. _bstr_t m_bstr;
  63. CBitmap m_Bitmap;
  64. PBYTE m_pRotateBuffer;
  65. private:
  66. HWND m_hCapWnd;  //产生的扑捉的窗口句柄
  67. HWND m_hParentWnd;//用于扑捉的窗口句柄
  68. CDC *m_pDC;
  69. CDC m_MemDC;
  70. int m_iMaxCapFrame;  //连续扑捉的帧数
  71. unsigned char * m_pBuffer; //保存帧的缓冲
  72. DWORD m_dwBufferSize;
  73. BOOL m_bInit;   //连接视频成功
  74. BOOL m_bCapture;  //正在扑捉
  75. int nOverlayColor; //抓图表识颜色
  76. int nOverlayShape; //抓图表识形状
  77. };
  78. //LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd,  LPVIDEOHDR lpVHdr);
  79. //LRESULT FAR PASCAL VideoCallbackProc(HWND hWnd,  LPVIDEOHDR lpVHdr);
  80. static CVideoCapture* lpVideo = NULL;
  81. #endif // !defined(AFX_VIDEOCAPTURE_H__FE7832C0_025A_11D5_9451_00E04C66EADC__INCLUDED_)