• 读取大恒采集卡c++代码


    #ifndef   _DAHENG_CARD_HEAD_
    #define  _DAHENG_CARD_HEAD_
    #include"Daheng\CGVideo.h"
    #include"Daheng\CGVidEx.h"
    #pragma comment(lib, "CGVideo.lib")
    #pragma comment(lib, "CGVidEx.lib")
    
    class DaHengVideo
    {
    public:
    	DaHengVideo()
    	{
    		initdata();
    	}
    	~DaHengVideo()
    	{
    		clear();
    	}
    	void initdata()
    	{
    		 pImage=NULL;
    		m_CardID=1,m_PortID=2,m_OSC28M=0;
    		m_Width=768,m_Height=576;
    		m_inputX=0,m_inputY=0,m_inputW=768,m_inputH=576;
    		m_Brightness=128,m_Contrast=128,m_Hue=80,m_Saturation=128;
    	
    	}
    	bool setup(int w,int h,int CardID,int PortID,int OSC28M)
    	{
    		 m_Width=w,m_Height=h;
        //---------------------------------------------------------------------------------------
        m_size=m_Width*m_Height*3;
        pImage=new BYTE[m_size];
      
        
     	//////////////////////////////////////////////////////////////////////////
    	CGSTATUS status =BeginCGCard(m_CardID,&m_hcg);
    	if(status!= CG_OK)
    	{
    		printf("init Card error! \n");
    	}
    	CGSetVideoStandard(m_hcg,PAL);
    	CGSetVideoFormat(m_hcg,RGB888);
    	CGSetScanMode(m_hcg,FRAME);
    	if(m_OSC28M)
            CGSelectCryOSC(m_hcg,CRY_OSC_28M);
        else
            CGSelectCryOSC(m_hcg,CRY_OSC_35M);
    	VIDEO_SOURCE source;
    	source.type	= COMPOSITE_VIDEO;
    	source.nIndex = m_PortID;
    	CGSetVideoSource(m_hcg,source);
    	CGSetInputWindow(m_hcg,m_inputX,m_inputY,m_inputW,m_inputH);
    	CGSetOutputWindow(m_hcg,0,0,m_Width,m_Height);
    	CGOpenSnapEx(m_hcg,SnapCallbackEx,this);
    	CGStartSnapEx(m_hcg,m_size*((m_CardID-1)*2),TRUE,2);
    
    	SetBrightness(m_Brightness);
    	SetContrast(m_Contrast);
    	SetHue(m_Hue);
    	SetSaturation(m_Saturation);
    
    		printf("DaHeng Card init Succssed \n");
    		return true;
    	}
    
    	void clear()
    	{
    		CGSTATUS m_stats=EndCGCard(m_hcg);
    		if(m_stats ==CG_OK)
    		{
    			printf("DaHengCard Shutdown Sucssed!\n ");
    		}
    		if(pImage!=NULL)
    		{
    			delete [] pImage;
    			pImage =NULL;
    		}
    		
    	}
    	
    	
    
    	void SetBrightness(long Brightness){m_Brightness=Brightness;CGAdjustVideo(m_hcg,BRIGHTNESS,m_Brightness);}
    	void SetContrast(long Contrast){m_Contrast=Contrast;CGAdjustVideo(m_hcg,CONTRAST,m_Contrast);}
    	void SetHue(long Hue){m_Hue=Hue;CGAdjustVideo(m_hcg,HUE,m_Hue);}
    	void SetSaturation(long Saturation){m_Saturation=Saturation;CGAdjustVideo(m_hcg,SATURATION,m_Saturation);}
    
    	void update()
    	{
    		if(m_Refrash)
    		{
    		
    		
    			m_Refrash=false;
    		}
    	
    	}
    	int GetW()
    	{
    		return m_Width;
    	}
    	int GetH()
    	{
    		return m_Height;
    	}
    	BYTE *GetPixels()
    	{
    		return pImage;
    	
    	}
    
    	void draw(float x, float y)
    	{
    		//m_Image.draw(x,y);
    	}
    	void draw(float x, float y,float w,float h)
    	{
    	   //  m_Image.draw(x,y,w,h);
    	}
    	//////////////////////////////////////////////////////////////////////////
    	void Play()
    	{
    		CGStartSnapEx(m_hcg,m_size*((m_CardID-1)*2),TRUE,2);
    	}
    	void Stop()
    	{
    		CGStopSnapEx(m_hcg);
    	}
    	void Snap(int mNumber)
    	{
    	//	if(m_Refrash)return;
    		HANDLE handle = NULL;
    		BYTE *pStaticBuffer=NULL;
    		if(CG_SUCCESS(CGStaticMemLock(m_size*(mNumber+(m_CardID-1)*2),m_size,&handle,(VOID **)&pStaticBuffer)))
    		{
    			printf("wai get data \n");
    			if(CG_SUCCESS(CGDataTransform(pImage,pStaticBuffer,m_Width,m_Height,24,false)))
    			{
    				printf("get data \n");
    				m_Refrash=true;
    			}
    		}
    		CGStaticMemUnlock(handle);
    	}
    static int CALLBACK SnapCallbackEx(SNAP_INFO *pInfo)
    {
    	DaHengVideo* pClass = (DaHengVideo*)(pInfo->pParam);
    	pClass->Snap(pInfo->nNumber);
    	printf("staic get \n");
    	return 1;
    }
    
    private:
    	int m_CardID;
    	int m_PortID;
    	int m_Width;
    	int m_Height;
    	int m_size;
    	HCG m_hcg;
    
    	int m_OSC28M;
    	BYTE* pImage;
    
    private:
    	int m_Brightness,m_Contrast,m_Hue,m_Saturation;
        int m_inputX,m_inputY,m_inputW,m_inputH;
    	bool m_Refrash;
    };
    
    
    
    
    #endif
    
  • 相关阅读:
    python 面向对象(三大特性)
    python 发红包
    python 计算器
    python 模块和包
    python 异常处理
    python 序列化模块
    python 常用模块
    esriSRGeoCS3Type Constants
    esriSRGeoCS2Type Constants
    esriSRGeoCSType Constants
  • 原文地址:https://www.cnblogs.com/dragon2012/p/3089070.html
Copyright © 2020-2023  润新知