我现在有一个数码像机,是通过USB接口介入机子里的,我想通过delphi程序接受传入的图象,并且能自动保存,请问用什么方法能够实现,或者给我点相应函数就行,万分感谢!!!

解决方案 »

  1.   

    现在直接都有这样的程序 比如vidcap
      

  2.   

    在Form1上放置一个TPanel控件,设Name为“gCapVideoArea”,该控件用于显示视频。再放置两个TButton控件,一个Name为“Openvideo”,另一个Name为“Closevideo”。定义全局变量:var//定义捕获窗句柄ghCapWnd: THandle;//可以得到视频数据指针的结构变量,用于回调函数中VideoStr: LPVIDEOHDR;//用于设置设备属性的结构变量CapParms: TCaptureParms;在Name为“Openvideo”的TButton 的Click事件中写入以下代码:procedure TForm1.OpenvideoClick(Sender: TObject);begin//使用Tpanel控件来创建捕获窗口ghCapWnd := CapCreateCaptureWindow( PChar(‘KruwoSoft'), //捕获窗口的名字WS_CHILD or WS_VISIBLE,//窗口样式0, //X坐标0, //Y坐标gCapVideoArea.Width, //窗口宽gCapVideoArea.Height, //窗口高gCapVideoArea.Handle, //窗口句柄0); //一般为0{为了能够捕获视频帧,要启动一个捕获帧回调函数VideoStreamCallBack。捕获一个视频流或当前设备状态时分别使用以下函数://捕获一个视频流CapSetCallbackOnVideoStream;//得到一个设备错误CapSetCallbackOnError;//得到一个设备状态CapSetCallbackOnStatus}//定义一个帧捕获回调函数CapSetCallbackOnFrame (ghCapWnd,LongInt(@VideoStreamCallBack));//将一个捕获窗口与一个设备驱程相关联,第二个参数是个序号,当系统中装有多个显视驱动程序时,其值分别依次为0到总个数CapDriverConnect(ghCapWnd, 0);//设置设备属性的结构变量CapParms.dwRequestMicroSecPerFrame:=40000;CapParms.fLimitEnabled := FALSE;CapParms.fCaptureAudio := FALSE; // NO AudioCapParms.fMCIControl := FALSE;CapParms.fYield := TRUE;CapParms.vKeyAbort := VK_ESCAPE;CapParms.fAbortLeftMouse := FALSE;CapParms.fAbortRightMouse := FALSE;//使设置生效CapCaptureSetSetup(ghCapWnd,LongInt(@CapParms),sizeof(TCAPTUREPARMS));//设置预览时的比例CapPreviewScale(ghCapWnd, 1);//设置预览时的帧频率CapPreviewRate(ghCapWnd,66);//如果要捕获视频流,则要使用函数指定不生成文件。否则将会自动生成AVI文件CapCaptureSequenceNoFile(ghCapWnd);//指定是否使用叠加模式,使用为1,否则为0CapOverlay(ghCapWnd, 1);//打开预览CapPreview(ghCapWnd, 1);end;在Name为“Closevideo”的TButton 的Click事件中写入以下代码:procedure TForm1.ClosevideoClick(Sender: TObject);begin//停止捕获capCaptureAbort(ghCapWnd);//将捕获窗同驱动器断开capDriverDisconnect(ghCapWnd);end;定义捕获帧回调函数:function FrameCallBack(hWnd:HWND; lpVHdr:LongInt) :LongInt; stdcall;varDataPoint:^byte;DibLen,RectWidth,RectHeight:integer;begin//转换从回调函数中得到的指针VideoStr:=LPVIDEOHDR(lpVHdr);//得到返回的数据大小DibLen:=VideoStr^.dwBufferLength;GetMem(DataPoint,64000);//将帧数据COPY到一个内存中,注意DATAPOINT要先分配空间CopyMemory(DataPoint,VideoStr^.lpData,Diblen);//一些其他处理……end;
      

  3.   

    用搜索引擎找些关于Twain的Delphi组件,就是对Twain.dll的封装,Windows中的这个链接库提供了相关接口!