资源简介

opencv+udp+c++的摄像头实时传输显示源码,里面包括client server两个c++源代码。用的时候需要导入opencv库和附加依赖项WS2_32.lib。在开发板也测试过。只需在开发板上移植opencv的动态链接库(该库我已经上传)和修改client.cpp中的一些函数就可以获取开发板上摄像头视频并实时显示。

资源截图

代码片段和文件信息

#include 
#include 
#include <./opencv/cv.h>  
#include <./opencv/cxcore.h>  
#include <./opencv/highgui.h>  
 

void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 const int blocksize=28880;
 //定义包结构  
 struct recvbuf//包格式  
 {  
     char buf[blocksize];//存放数据的变量  
     int flag;//标志          
  }; 
 struct recvbuf data; 

 
 wVersionRequested = MAKEWORD( 2 0 );
 
 err = WSAStartup( wVersionRequested &wsaData );
 if ( err != 0 ) {
  return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 2||HIBYTE( wsaData.wVersion ) != 0 ) {
  WSACleanup( );
  return;
 }
 SOCKET sockClient=socket(AF_INETSOCK_DGRAM0);
 
 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1“);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);

 int nRecvBuf=1024*1024*10;//接收缓存10M  
 setsockopt(sockClientSOL_SOCKETSO_RCVBUF(const char*)&nRecvBufsizeof(int));
  //声明IplImage指针  
  IplImage* pframe = NULL*frame_copy=0;  
  
 //获取摄像头  
  CvCapture* pCapture = cvCreateCameraCapture(0);  
 
  //创建窗口  
  //cvNamedWindow(“video“ 1);  
   
  //显示视屏  
  /*while(1)  
  {  
      pframe=cvQueryframe( pCapture );  
      if(!pframe)break;  
      cvShowImage(“video“pframe);  
      char c=cvWaitKey(33);  
      if(c==27)break;  
  }  
 */

//IplImage *frame=NULL *frame_copy=0;

while(1){
//memset(data.buf 0 sizeof(char)*blocksize);

pframe=cvQueryframe(pCapture);                            //取帧操作  
//printf(“the deeps is %d; the channel is :%d\n“pframe->depthpframe->nChannels);
if(!pframe)break;  
//cvShowImage(“video“frame);

if(pframe)  
    { 
char* img=pframe->imageData;                        //指向该帧的数据矩阵  
            for(int i=0;i<32;i++)                    //640*480*3= 921600 
{
for(int k=0;k                    { 
data.buf[k]=img[i*blocksize+k];       
 }  
                    if(i==31)                         //标识一帧中最后一个数据包             
                    {  
data.flag=2;   
}  
                    else  
                    {  
data.flag=1;  
                    }  
 sendto(sockClient(char*)(&data)sizeof(data)0(SOCKADDR*)&addrSrvsizeof(SOCKADDR)); 
}      
cvReleaseImage( &frame_copy );   // 退出之前结束底层api的捕获操作
Sleep(25);

}
}
 cvReleaseCapture(&pCapture);
 closesocket(sockClient);
 WSACleanup();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2016-01-21 18:52  opencv+UDP的摄像头视频实时传输

     文件       2532  2016-01-21 16:53  opencv+UDP的摄像头视频实时传输\client.cpp

     文件       3163  2016-01-21 17:08  opencv+UDP的摄像头视频实时传输\server.cpp

----------- ---------  ---------- -----  ----

                 5695                    3


评论

共有 条评论