精华内容
下载资源
问答
  • 研究论文-一种实时的网络图像传输系统的设计
  • 提出了基于双正交重叠变换的井下多媒体传感器网络长距离多节点协同图像压缩传输机制,并将其仿真结果与传统簇结构图像传输机制的仿真结果进行了比较,证明了LDMCIC算法的在煤矿井下应用的有效性和实用性。
  • 介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。 /******...

    介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。

    /*******************************************************
     * Filename: soket_image.c
     * Description:Send image by gprs
     * Author: ly44770
     * History: 1.0
     * Date:    07/06/27
     *******************************************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <errno.h>
    //#include <sys/ipc.h>
    #include <semaphore.h>
    #include <fcntl.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <netdb.h>
    //#include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>

    #include <sys/wait.h>
    #define TRUE 1
    #define FALSE 0
    #define SERVPORT 9009
    #define SERVER_IP "192.168.1.202"
    //#define SERVER_IP "192.168.0.21"
    typedef char BOOL;
    BOOL bDataOK;
    #define SIZE_PACKET  512
    #define STR_HEAD  "MY_IMG"
    #define GH_DBNAME  "MY_IMG_ARM"
    #define Group_Devide_Flag "|"
    #define STR_TAIL  "AT91RM"
    #define NAME_LEN  strlen(GH_DBNAME)
    typedef struct
    {
     unsigned short  ID;  // Command ID
     char   Parameter1; // Parameter1
     char   Parameter2; // Parameter2
     char   Parameter3; // Parameter3
     char   Parameter4; // Parameter4
    } _comedia_CMD;
    //_comedia_CMD comedia_CMD;
    _comedia_CMD comedia_CMD2;
     
    typedef struct
    {
     unsigned short ID;
     unsigned short DataSize;
     char         data[506];
     unsigned short VerifyCode;
    } _PKG;
    _PKG PKG;
    _PKG PKG2;
    #pragma pack(1)
    typedef struct
    {
     char BufHead[6];
     char BufDevide1[1];
     char BufDbName[NAME_LEN];
     char BufDevide2[1];
     _PKG m_Pkg;
     char BufDevide3[1];
     char BufTail[4];
    } GH_PKG ;
    #pragma pack()
    GH_PKG SendPkg;
    //unsigned long ulImageBuffer;
    //unsigned long ulIndex;
    void InitPackage()
    {
     memset(SendPkg.BufHead,'/0',6);
     memcpy(SendPkg.BufHead,STR_HEAD,strlen(STR_HEAD));
     memset(SendPkg.BufDevide1,'/0',1);
     memcpy(SendPkg.BufDevide1,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufDbName,'/0',11);
     memcpy(SendPkg.BufDbName,GH_DBNAME,strlen(GH_DBNAME));
     memset(SendPkg.BufDevide2,'/0',1);
     memcpy(SendPkg.BufDevide2,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
     memset(SendPkg.BufDevide3,'/0',1);
     memcpy(SendPkg.BufDevide3,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufTail,'/0',4);
     memcpy(SendPkg.BufTail,STR_TAIL,strlen(STR_TAIL));
    }

     
    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    sem_t get_img,send_img;
    void consumer(void *arg);
    void productor(void *arg);

    int main(int argc, char *argv[])
    {
     int ret;
     pthread_t id1,id2;
     
     pthread_mutex_init(&mutex,NULL);
     if(ret!=0)
     {
      perror("mutex_init");
     }
     
     ret=sem_init(&get_img,0,0);
     if(ret!=0)
     {
      perror("get_img_sem_init");
     }

     ret=sem_init(&send_img,0,1);
     if(ret!=0)
     {
      perror("send_img_sem_init");
     }

     // InitPackage();
     while(1){
      ret=pthread_create(&id1,NULL,(void *)productor, NULL);
      if(ret!=0)
       perror("pthread cread1");

      ret=pthread_create(&id2,NULL,(void *)consumer, NULL);
      if(ret!=0)
       perror("pthread cread2");

      pthread_join(id1,NULL);
      pthread_join(id2,NULL);
     }
     exit(0);
    }
    void productor(void *arg)
    {
     // int i,nwrite;

     while(1)
     {
      sem_wait(&send_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
       exit(1);

     }
      printf("get image pthread start/n");
      if(fork() == 0)
      {
       if(execl("/home/a/vgrabbj","vgrabbj","-f ./1.jpg", "-d /dev/v4l/video0",NULL) < 0)
        perror("execl error!/n");
       printf("get image ok");
      }
      wait(0);
      if(pthread_mutex_unlock(&mutex)!=0){
       perror("pthread_mutex_unlock");
      }
      else
       printf("get image pthread stop/n");
      sem_post(&get_img);
      sleep(1);
      //pthread_exit(0);
     }
    }
    void consumer(void *arg)
    {
     int i,img_fd;
     int sockfd,sendbytes;
     struct sockaddr_in serv_addr;
     void *img_addr = NULL;
     int  img_index;
     void *img_addr2 = NULL;
     int img_index2;
     struct stat sb;
     int Pkg_num,DataSize,LastDataSize;
     BOOL bDone;
     int iIndex,iTemp;
     // bDone = FALSE;
     // iIndex = 0;
     while(1)
     {
      sem_wait(&get_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
      }
      else
      {
       printf("send image pthread start/n");
       img_fd = open("/home/work/mywork/image/1.jpg",O_RDONLY);
       if(img_fd < 0)
       { perror("open the image");
        exit(1);
       }
       fstat(img_fd,&sb);
       img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
       if(img_addr == MAP_FAILED)
       { perror("map the image");
        exit(1);
       }
       LastDataSize = sb.st_size % 506;
       if(LastDataSize == 0)
        Pkg_num = sb.st_size / 506 ;
       else
        Pkg_num = sb.st_size / 506 + 1;
       //LastDataSize = sb.st_size % 506;
       DataSize = Pkg_num * 512;
       //DataSize = sb.st_size;
       img_addr2 = malloc(DataSize);
       if(img_addr2 == NULL)
        printf("malloc error /n");
       img_index = 0;
       img_index2 = 0;
       if(LastDataSize == 0)
       {for(i = 0; i < Pkg_num; i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
       }else{
        for(i = 0; i < (Pkg_num-1); i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
        //img_index += 506;
        //img_index2 += sizeof(_PKG);
        PKG.ID  = Pkg_num - 1;
        PKG.DataSize = LastDataSize;
        memcpy(PKG.data,img_addr + img_index,LastDataSize);
        memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
       }
    #if 0
       fd2 = open("/home/work/mywork/image/2.jpg",O_CREAT|O_RDWR);
       if(fd2 < 0)
       { perror("open the image2");
        exit(1);
       }
       write(fd2,img_add,sb.st_size);
       memcpy(a,img_add,5);
       printf("%c/n",a[1]);
       printf("%x/n",b[0]);
       printf("%x/n",b[1]);
    #endif
       munmap(img_addr,sb.st_size);
       close(img_fd); 
       if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
        perror("socket");
        exit(1);
       }
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_port=htons(SERVPORT);
       serv_addr.sin_addr.s_addr=inet_addr(SERVER_IP);
       bzero(&(serv_addr.sin_zero),8);

    if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){
        perror("connect");
        exit(1);
       }

       comedia_CMD2.ID         = 0x0aaa;
       comedia_CMD2.Parameter1 = 0x05;
       comedia_CMD2.Parameter2 = ( char )( sb.st_size );
       comedia_CMD2.Parameter3 = ( char )( sb.st_size / 256 );
       comedia_CMD2.Parameter4 = ( char )( sb.st_size / 256 / 256 );

       printf("DataSize=%d/n",DataSize);
       printf("PKG.DataSize=%d/n",PKG.DataSize);
       printf("Pkg_num=%d/n",Pkg_num);
       printf("LastDataSize=%d/n",LastDataSize);
       printf("comedia_CMD2.ID=%d/n",comedia_CMD2.ID);
       printf("comedia_CMD2.Parameter1=%d/n",comedia_CMD2.Parameter1);
       printf("comedia_CMD2.Parameter2=%d/n",comedia_CMD2.Parameter2);
       printf("comedia_CMD2.Parameter3=%d/n",comedia_CMD2.Parameter3);
       printf("comedia_CMD2.Parameter4=%d/n",comedia_CMD2.Parameter4);

       InitPackage();
       if((sendbytes=send(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1){
        perror("send");
        exit(1);
       }
       printf("send %d bytes/n",sendbytes);
       //   static BOOL bDone;
       //   static int iIndex,iTemp;
       bDone = FALSE;
       iIndex = 0;
       while(!bDone)
       {
        printf("start to receive/n");
        if((iTemp=recv(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1)
        {
         bDone = TRUE;
         perror("recv");
         printf("/ntcp read error!/n");
         exit(1);
        }
        printf("recv %d bytes/n",iTemp);
        iIndex += iTemp;
        if( iIndex >= 6 )
        {
         iIndex = 0;
         if( comedia_CMD2.ID == 0x0eaa )
         {
          if( comedia_CMD2.Parameter3 == (char)0xf0
            && comedia_CMD2.Parameter4 == (char)0xf0 )
          {
           //bDataOK = FALSE;
           printf( "/nsend Image id = %d./n", PKG2.ID );
           bDone = TRUE;
          }
          else
          {
           if( TRUE )
           {
            printf( "/nsend Image id = %d./n", comedia_CMD2.Parameter3 );
            memcpy(&PKG2,img_addr2 + comedia_CMD2.Parameter3 * 512, sizeof( _PKG ) );
            memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
            printf("/nGH_PKG size= %d/n",sizeof(GH_PKG));
            printf("/n_PKG size= %d/n",sizeof(_PKG));
            if((iTemp=send(sockfd,&SendPkg,sizeof(GH_PKG),0))==-1){
             printf("/ntcp write error!/n");
             perror("send");
             exit(1);
            }
           }
          }
         }
        }
       }
       close(sockfd);
       free(img_addr2);
       img_addr2 = NULL;
       if(pthread_mutex_unlock(&mutex)!=0){
        perror("pthread_mutex_unlock");
       }
       else
        printf("send image pthread stop/n");
       sem_post(&send_img);
       sleep(1);
       //pthread_exit(0);
      }
     }
    }

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zouwen198317/archive/2010/08/21/5829361.aspx

    展开全文
  •   介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。...

     

    介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。

     

    /*******************************************************
     * Filename: soket_image.c
     * Description:Send image by gprs 
     * Author: ly44770
     * History: 1.0
     * Date:    07/06/27
     *******************************************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <errno.h>
    //#include <sys/ipc.h>
    #include <semaphore.h>
    #include <fcntl.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <netdb.h>
    //#include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>

    #include <sys/wait.h>
    #define TRUE 1
    #define FALSE 0
    #define SERVPORT 9009
    #define SERVER_IP "192.168.1.202"
    //#define SERVER_IP "192.168.0.21"
    typedef char BOOL;
    BOOL bDataOK;
    #define SIZE_PACKET  512
    #define STR_HEAD  "MY_IMG"
    #define GH_DBNAME  "MY_IMG_ARM"
    #define Group_Devide_Flag "|"
    #define STR_TAIL  "AT91RM"
    #define NAME_LEN  strlen(GH_DBNAME)
    typedef struct
    {
     unsigned short  ID;  // Command ID
     char   Parameter1; // Parameter1
     char   Parameter2; // Parameter2
     char   Parameter3; // Parameter3
     char   Parameter4; // Parameter4
    } _comedia_CMD;
    //_comedia_CMD comedia_CMD;
    _comedia_CMD comedia_CMD2;
     
    typedef struct
    {
     unsigned short ID;
     unsigned short DataSize;
     char         data[506];
     unsigned short VerifyCode;
    } _PKG;
    _PKG PKG;
    _PKG PKG2;
    #pragma pack(1)
    typedef struct
    {
     char BufHead[6];
     char BufDevide1[1];
     char BufDbName[NAME_LEN];
     char BufDevide2[1];
     _PKG m_Pkg;
     char BufDevide3[1];
     char BufTail[4];
    } GH_PKG ;
    #pragma pack()
    GH_PKG SendPkg;
    //unsigned long ulImageBuffer;
    //unsigned long ulIndex;
    void InitPackage()
    {
     memset(SendPkg.BufHead,'/0',6);
     memcpy(SendPkg.BufHead,STR_HEAD,strlen(STR_HEAD));
     memset(SendPkg.BufDevide1,'/0',1);
     memcpy(SendPkg.BufDevide1,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufDbName,'/0',11);
     memcpy(SendPkg.BufDbName,GH_DBNAME,strlen(GH_DBNAME));
     memset(SendPkg.BufDevide2,'/0',1);
     memcpy(SendPkg.BufDevide2,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
     memset(SendPkg.BufDevide3,'/0',1);
     memcpy(SendPkg.BufDevide3,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufTail,'/0',4);
     memcpy(SendPkg.BufTail,STR_TAIL,strlen(STR_TAIL));
    }

     
    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    sem_t get_img,send_img;
    void consumer(void *arg);
    void productor(void *arg);

    int main(int argc, char *argv[])
    {
     int ret;
     pthread_t id1,id2;
     
     pthread_mutex_init(&mutex,NULL);
     if(ret!=0)
     {
      perror("mutex_init");
     }
     
     ret=sem_init(&get_img,0,0);
     if(ret!=0)
     {
      perror("get_img_sem_init");
     }

     ret=sem_init(&send_img,0,1);
     if(ret!=0)
     {
      perror("send_img_sem_init");
     }

     // InitPackage();
     while(1){
      ret=pthread_create(&id1,NULL,(void *)productor, NULL);
      if(ret!=0)
       perror("pthread cread1");

      ret=pthread_create(&id2,NULL,(void *)consumer, NULL);
      if(ret!=0)
       perror("pthread cread2");

      pthread_join(id1,NULL);
      pthread_join(id2,NULL);
     }
     exit(0);
    }
    void productor(void *arg)
    {
     // int i,nwrite;

     while(1)
     {
      sem_wait(&send_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
       exit(1);

     }
      printf("get image pthread start/n");
      if(fork() == 0)
      {
       if(execl("/home/a/vgrabbj","vgrabbj","-f ./1.jpg", "-d /dev/v4l/video0",NULL) < 0)
        perror("execl error!/n");
       printf("get image ok");
      }
      wait(0);
      if(pthread_mutex_unlock(&mutex)!=0){
       perror("pthread_mutex_unlock");
      }
      else
       printf("get image pthread stop/n");
      sem_post(&get_img);
      sleep(1);
      //pthread_exit(0);
     }
    }
    void consumer(void *arg)
    {
     int i,img_fd;
     int sockfd,sendbytes;
     struct sockaddr_in serv_addr;
     void *img_addr = NULL;
     int  img_index;
     void *img_addr2 = NULL;
     int img_index2;
     struct stat sb;
     int Pkg_num,DataSize,LastDataSize;
     BOOL bDone;
     int iIndex,iTemp;
     // bDone = FALSE;
     // iIndex = 0;
     while(1)
     {
      sem_wait(&get_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
      }
      else
      {
       printf("send image pthread start/n");
       img_fd = open("/home/work/mywork/image/1.jpg",O_RDONLY);
       if(img_fd < 0)
       { perror("open the image");
        exit(1);
       }
       fstat(img_fd,&sb);
       img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
       if(img_addr == MAP_FAILED)
       { perror("map the image");
        exit(1); 
       }
       LastDataSize = sb.st_size % 506;
       if(LastDataSize == 0)
        Pkg_num = sb.st_size / 506 ;
       else
        Pkg_num = sb.st_size / 506 + 1;
       //LastDataSize = sb.st_size % 506;
       DataSize = Pkg_num * 512;
       //DataSize = sb.st_size;
       img_addr2 = malloc(DataSize);
       if(img_addr2 == NULL)
        printf("malloc error /n");
       img_index = 0;
       img_index2 = 0;
       if(LastDataSize == 0)
       {for(i = 0; i < Pkg_num; i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
       }else{ 
        for(i = 0; i < (Pkg_num-1); i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
        //img_index += 506;
        //img_index2 += sizeof(_PKG);
        PKG.ID  = Pkg_num - 1;
        PKG.DataSize = LastDataSize;
        memcpy(PKG.data,img_addr + img_index,LastDataSize);
        memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
       }
    #if 0
       fd2 = open("/home/work/mywork/image/2.jpg",O_CREAT|O_RDWR);
       if(fd2 < 0)
       { perror("open the image2");
        exit(1);
       }
       write(fd2,img_add,sb.st_size);
       memcpy(a,img_add,5);
       printf("%c/n",a[1]);
       printf("%x/n",b[0]);
       printf("%x/n",b[1]);
    #endif
       munmap(img_addr,sb.st_size);
       close(img_fd);  
       if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
        perror("socket");
        exit(1);
       }
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_port=htons(SERVPORT);
       serv_addr.sin_addr.s_addr=inet_addr(SERVER_IP);
       bzero(&(serv_addr.sin_zero),8);

     

    展开全文
  • 介绍基于ARM的网络图像传输技术

    千次阅读 2010-08-21 22:52:00
    <br />介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。 ...

    介绍基于ARM的网络图像传输技术 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。

     

    /*******************************************************
     * Filename: soket_image.c
     * Description:Send image by gprs 
     * Author: ly44770
     * History: 1.0
     * Date:    07/06/27
     *******************************************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <errno.h>
    //#include <sys/ipc.h>
    #include <semaphore.h>
    #include <fcntl.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <netdb.h>
    //#include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>

    #include <sys/wait.h>
    #define TRUE 1
    #define FALSE 0
    #define SERVPORT 9009
    #define SERVER_IP "192.168.1.202"
    //#define SERVER_IP "192.168.0.21"
    typedef char BOOL;
    BOOL bDataOK;
    #define SIZE_PACKET  512
    #define STR_HEAD  "MY_IMG"
    #define GH_DBNAME  "MY_IMG_ARM"
    #define Group_Devide_Flag "|"
    #define STR_TAIL  "AT91RM"
    #define NAME_LEN  strlen(GH_DBNAME)
    typedef struct
    {
     unsigned short  ID;  // Command ID
     char   Parameter1; // Parameter1
     char   Parameter2; // Parameter2
     char   Parameter3; // Parameter3
     char   Parameter4; // Parameter4
    } _comedia_CMD;
    //_comedia_CMD comedia_CMD;
    _comedia_CMD comedia_CMD2;
     
    typedef struct
    {
     unsigned short ID;
     unsigned short DataSize;
     char         data[506];
     unsigned short VerifyCode;
    } _PKG;
    _PKG PKG;
    _PKG PKG2;
    #pragma pack(1)
    typedef struct
    {
     char BufHead[6];
     char BufDevide1[1];
     char BufDbName[NAME_LEN];
     char BufDevide2[1];
     _PKG m_Pkg;
     char BufDevide3[1];
     char BufTail[4];
    } GH_PKG ;
    #pragma pack()
    GH_PKG SendPkg;
    //unsigned long ulImageBuffer;
    //unsigned long ulIndex;
    void InitPackage()
    {
     memset(SendPkg.BufHead,'/0',6);
     memcpy(SendPkg.BufHead,STR_HEAD,strlen(STR_HEAD));
     memset(SendPkg.BufDevide1,'/0',1);
     memcpy(SendPkg.BufDevide1,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufDbName,'/0',11);
     memcpy(SendPkg.BufDbName,GH_DBNAME,strlen(GH_DBNAME));
     memset(SendPkg.BufDevide2,'/0',1);
     memcpy(SendPkg.BufDevide2,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
     memset(SendPkg.BufDevide3,'/0',1);
     memcpy(SendPkg.BufDevide3,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufTail,'/0',4);
     memcpy(SendPkg.BufTail,STR_TAIL,strlen(STR_TAIL));
    }

     
    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    sem_t get_img,send_img;
    void consumer(void *arg);
    void productor(void *arg);

    int main(int argc, char *argv[])
    {
     int ret;
     pthread_t id1,id2;
     
     pthread_mutex_init(&mutex,NULL);
     if(ret!=0)
     {
      perror("mutex_init");
     }
     
     ret=sem_init(&get_img,0,0);
     if(ret!=0)
     {
      perror("get_img_sem_init");
     }

     ret=sem_init(&send_img,0,1);
     if(ret!=0)
     {
      perror("send_img_sem_init");
     }

     // InitPackage();
     while(1){
      ret=pthread_create(&id1,NULL,(void *)productor, NULL);
      if(ret!=0)
       perror("pthread cread1");

      ret=pthread_create(&id2,NULL,(void *)consumer, NULL);
      if(ret!=0)
       perror("pthread cread2");

      pthread_join(id1,NULL);
      pthread_join(id2,NULL);
     }
     exit(0);
    }
    void productor(void *arg)
    {
     // int i,nwrite;

     while(1)
     {
      sem_wait(&send_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
       exit(1);

     }
      printf("get image pthread start/n");
      if(fork() == 0)
      {
       if(execl("/home/a/vgrabbj","vgrabbj","-f ./1.jpg", "-d /dev/v4l/video0",NULL) < 0)
        perror("execl error!/n");
       printf("get image ok");
      }
      wait(0);
      if(pthread_mutex_unlock(&mutex)!=0){
       perror("pthread_mutex_unlock");
      }
      else
       printf("get image pthread stop/n");
      sem_post(&get_img);
      sleep(1);
      //pthread_exit(0);
     }
    }
    void consumer(void *arg)
    {
     int i,img_fd;
     int sockfd,sendbytes;
     struct sockaddr_in serv_addr;
     void *img_addr = NULL;
     int  img_index;
     void *img_addr2 = NULL;
     int img_index2;
     struct stat sb;
     int Pkg_num,DataSize,LastDataSize;
     BOOL bDone;
     int iIndex,iTemp;
     // bDone = FALSE;
     // iIndex = 0;
     while(1)
     {
      sem_wait(&get_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
      }
      else
      {
       printf("send image pthread start/n");
       img_fd = open("/home/work/mywork/image/1.jpg",O_RDONLY);
       if(img_fd < 0)
       { perror("open the image");
        exit(1);
       }
       fstat(img_fd,&sb);
       img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
       if(img_addr == MAP_FAILED)
       { perror("map the image");
        exit(1); 
       }
       LastDataSize = sb.st_size % 506;
       if(LastDataSize == 0)
        Pkg_num = sb.st_size / 506 ;
       else
        Pkg_num = sb.st_size / 506 + 1;
       //LastDataSize = sb.st_size % 506;
       DataSize = Pkg_num * 512;
       //DataSize = sb.st_size;
       img_addr2 = malloc(DataSize);
       if(img_addr2 == NULL)
        printf("malloc error /n");
       img_index = 0;
       img_index2 = 0;
       if(LastDataSize == 0)
       {for(i = 0; i < Pkg_num; i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
       }else{ 
        for(i = 0; i < (Pkg_num-1); i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
        //img_index += 506;
        //img_index2 += sizeof(_PKG);
        PKG.ID  = Pkg_num - 1;
        PKG.DataSize = LastDataSize;
        memcpy(PKG.data,img_addr + img_index,LastDataSize);
        memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
       }
    #if 0
       fd2 = open("/home/work/mywork/image/2.jpg",O_CREAT|O_RDWR);
       if(fd2 < 0)
       { perror("open the image2");
        exit(1);
       }
       write(fd2,img_add,sb.st_size);
       memcpy(a,img_add,5);
       printf("%c/n",a[1]);
       printf("%x/n",b[0]);
       printf("%x/n",b[1]);
    #endif
       munmap(img_addr,sb.st_size);
       close(img_fd);  
       if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
        perror("socket");
        exit(1);
       }
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_port=htons(SERVPORT);
       serv_addr.sin_addr.s_addr=inet_addr(SERVER_IP);
       bzero(&(serv_addr.sin_zero),8);

    if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){
        perror("connect");
        exit(1);
       }

     

       comedia_CMD2.ID         = 0x0aaa;
       comedia_CMD2.Parameter1 = 0x05;
       comedia_CMD2.Parameter2 = ( char )( sb.st_size );
       comedia_CMD2.Parameter3 = ( char )( sb.st_size / 256 );
       comedia_CMD2.Parameter4 = ( char )( sb.st_size / 256 / 256 );

       printf("DataSize=%d/n",DataSize);
       printf("PKG.DataSize=%d/n",PKG.DataSize);
       printf("Pkg_num=%d/n",Pkg_num);
       printf("LastDataSize=%d/n",LastDataSize);
       printf("comedia_CMD2.ID=%d/n",comedia_CMD2.ID);
       printf("comedia_CMD2.Parameter1=%d/n",comedia_CMD2.Parameter1);
       printf("comedia_CMD2.Parameter2=%d/n",comedia_CMD2.Parameter2);
       printf("comedia_CMD2.Parameter3=%d/n",comedia_CMD2.Parameter3);
       printf("comedia_CMD2.Parameter4=%d/n",comedia_CMD2.Parameter4);

       InitPackage();
       if((sendbytes=send(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1){
        perror("send");
        exit(1);
       }
       printf("send %d bytes/n",sendbytes);
       //   static BOOL bDone;
       //   static int iIndex,iTemp;
       bDone = FALSE;
       iIndex = 0;
       while(!bDone)
       {
        printf("start to receive/n");
        if((iTemp=recv(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1)
        {
         bDone = TRUE;
         perror("recv");
         printf("/ntcp read error!/n");
         exit(1);
        }
        printf("recv %d bytes/n",iTemp);
        iIndex += iTemp;
        if( iIndex >= 6 )
        {
         iIndex = 0;
         if( comedia_CMD2.ID == 0x0eaa )
         {
          if( comedia_CMD2.Parameter3 == (char)0xf0
            && comedia_CMD2.Parameter4 == (char)0xf0 )
          {
           //bDataOK = FALSE;
           printf( "/nsend Image id = %d./n", PKG2.ID );
           bDone = TRUE;
          }
          else
          {
           if( TRUE )
           {
            printf( "/nsend Image id = %d./n", comedia_CMD2.Parameter3 );
            memcpy(&PKG2,img_addr2 + comedia_CMD2.Parameter3 * 512, sizeof( _PKG ) );
            memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
            printf("/nGH_PKG size= %d/n",sizeof(GH_PKG));
            printf("/n_PKG size= %d/n",sizeof(_PKG));
            if((iTemp=send(sockfd,&SendPkg,sizeof(GH_PKG),0))==-1){
             printf("/ntcp write error!/n");
             perror("send");
             exit(1);
            }
           }
          }
         }
        }
       }
       close(sockfd);
       free(img_addr2);
       img_addr2 = NULL;
       if(pthread_mutex_unlock(&mutex)!=0){
        perror("pthread_mutex_unlock");
       }
       else
        printf("send image pthread stop/n");
       sem_post(&send_img);
       sleep(1);
       //pthread_exit(0);
      }
     }

    展开全文
  • 一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。:-)。 /******************************************...
    一段程序,两个线程:一个完成usb摄像头图像的采集,另一个借助网络实现远程传输。图像采集线程通过调用获取图像的程序完成采集任务;网络传输就是socket编程了。:-)。
    /*******************************************************
     * Filename: soket_image.c
     * Description:Send image by gprs 
     * Author: ly44770
     * History: 1.0
     * Date:    07/06/27
     *******************************************************/
    #include 
    #include 
    #include 
    #include 
    #include 
    //#include
    #include 
    #include 
    #include 
    #include 
    #include 
    #include
    #include 
    //#include 
    #include 
    #include 
    #include
    
    #include
    #define TRUE 1
    #define FALSE 0
    #define SERVPORT 9009
    #define SERVER_IP "192.168.1.202"
    //#define SERVER_IP "192.168.0.21"
    typedef char BOOL;
    BOOL bDataOK;
    #define SIZE_PACKET  512
    #define STR_HEAD  "MY_IMG"
    #define GH_DBNAME  "MY_IMG_ARM"
    #define Group_Devide_Flag "|"
    #define STR_TAIL  "AT91RM"
    #define NAME_LEN  strlen(GH_DBNAME)
    typedef struct
    {
     unsigned short  ID;  // Command ID
     char   Parameter1; // Parameter1
     char   Parameter2; // Parameter2
     char   Parameter3; // Parameter3
     char   Parameter4; // Parameter4
    } _comedia_CMD;
    //_comedia_CMD comedia_CMD;
    _comedia_CMD comedia_CMD2;
     
    typedef struct
    {
     unsigned short ID;
     unsigned short DataSize;
     char         data[506];
     unsigned short VerifyCode;
    } _PKG;
    _PKG PKG;
    _PKG PKG2;
    #pragma pack(1)
    typedef struct
    {
     char BufHead[6];
     char BufDevide1[1];
     char BufDbName[NAME_LEN];
     char BufDevide2[1];
     _PKG m_Pkg;
     char BufDevide3[1];
     char BufTail[4];
    } GH_PKG ;
    #pragma pack()
    GH_PKG SendPkg;
    //unsigned long ulImageBuffer;
    //unsigned long ulIndex;
    void InitPackage()
    {
     memset(SendPkg.BufHead,'\0',6);
     memcpy(SendPkg.BufHead,STR_HEAD,strlen(STR_HEAD));
     memset(SendPkg.BufDevide1,'\0',1);
     memcpy(SendPkg.BufDevide1,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufDbName,'\0',11);
     memcpy(SendPkg.BufDbName,GH_DBNAME,strlen(GH_DBNAME));
     memset(SendPkg.BufDevide2,'\0',1);
     memcpy(SendPkg.BufDevide2,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
     memset(SendPkg.BufDevide3,'\0',1);
     memcpy(SendPkg.BufDevide3,Group_Devide_Flag,strlen(Group_Devide_Flag));
     memset(SendPkg.BufTail,'\0',4);
     memcpy(SendPkg.BufTail,STR_TAIL,strlen(STR_TAIL));
    }
    
     
    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    sem_t get_img,send_img;
    void consumer(void *arg);
    void productor(void *arg);
    
    int main(int argc, char *argv[])
    {
     int ret;
     pthread_t id1,id2;
     
     pthread_mutex_init(&mutex,NULL);
     if(ret!=0)
     {
      perror("mutex_init");
     }
     
     ret=sem_init(&get_img,0,0);
     if(ret!=0)
     {
      perror("get_img_sem_init");
     }
    
     ret=sem_init(&send_img,0,1);
     if(ret!=0)
     {
      perror("send_img_sem_init");
     }
    
     // InitPackage();
     while(1){
      ret=pthread_create(&id1,NULL,(void *)productor, NULL);
      if(ret!=0)
       perror("pthread cread1");
    
      ret=pthread_create(&id2,NULL,(void *)consumer, NULL);
      if(ret!=0)
       perror("pthread cread2");
    
      pthread_join(id1,NULL);
      pthread_join(id2,NULL);
     }
     exit(0);
    }
    void productor(void *arg)
    {
     // int i,nwrite;
    
     while(1)
     {
      sem_wait(&send_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
       exit(1);
      }
      printf("get image pthread start\n");
      if(fork() == 0)
      {
       if(execl("/home/a/vgrabbj","vgrabbj","-f ./1.jpg", "-d /dev/v4l/video0",NULL) < 0)
        perror("execl error!\n");
       printf("get image ok");
      }
      wait(0);
      if(pthread_mutex_unlock(&mutex)!=0){
       perror("pthread_mutex_unlock");
      }
      else
       printf("get image pthread stop\n");
      sem_post(&get_img);
      sleep(1);
      //pthread_exit(0);
     }
    }
    void consumer(void *arg)
    {
     int i,img_fd;
     int sockfd,sendbytes;
     struct sockaddr_in serv_addr;
     void *img_addr = NULL;
     int  img_index;
     void *img_addr2 = NULL;
     int img_index2;
     struct stat sb;
     int Pkg_num,DataSize,LastDataSize;
     BOOL bDone;
     int iIndex,iTemp;
     // bDone = FALSE;
     // iIndex = 0;
     while(1)
     {
      sem_wait(&get_img);
      if(pthread_mutex_lock(&mutex)!=0){
       perror("pthread_mutex_lock");
      }
      else
      {
       printf("send image pthread start\n");
       img_fd = open("/home/work/mywork/image/1.jpg",O_RDONLY);
       if(img_fd < 0)
       { perror("open the image");
        exit(1);
       }
       fstat(img_fd,&sb);
       img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
       if(img_addr == MAP_FAILED)
       { perror("map the image");
        exit(1); 
       }
       LastDataSize = sb.st_size % 506;
       if(LastDataSize == 0)
        Pkg_num = sb.st_size / 506 ;
       else
        Pkg_num = sb.st_size / 506 + 1;
       //LastDataSize = sb.st_size % 506;
       DataSize = Pkg_num * 512;
       //DataSize = sb.st_size;
       img_addr2 = malloc(DataSize);
       if(img_addr2 == NULL)
        printf("malloc error \n");
       img_index = 0;
       img_index2 = 0;
       if(LastDataSize == 0)
       {for(i = 0; i < Pkg_num; i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
       }else{ 
        for(i = 0; i < (Pkg_num-1); i++)
        {
         PKG.ID  = i;
         PKG.DataSize = 506;
         memcpy(PKG.data,img_addr + img_index,506);
         memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
         img_index += 506;
         img_index2 += sizeof(_PKG);
        }
        //img_index += 506;
        //img_index2 += sizeof(_PKG);
        PKG.ID  = Pkg_num - 1;
        PKG.DataSize = LastDataSize;
        memcpy(PKG.data,img_addr + img_index,LastDataSize);
        memcpy(img_addr2 + img_index2,&PKG,sizeof(_PKG));
       }
    #if 0
       fd2 = open("/home/work/mywork/image/2.jpg",O_CREAT|O_RDWR);
       if(fd2 < 0)
       { perror("open the image2");
        exit(1);
       }
       write(fd2,img_add,sb.st_size);
       memcpy(a,img_add,5);
       printf("%c\n",a[1]);
       printf("%x\n",b[0]);
       printf("%x\n",b[1]);
    #endif
       munmap(img_addr,sb.st_size);
       close(img_fd);  
       if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
        perror("socket");
        exit(1);
       }
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_port=htons(SERVPORT);
       serv_addr.sin_addr.s_addr=inet_addr(SERVER_IP);
       bzero(&(serv_addr.sin_zero),8);
       if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){
        perror("connect");
        exit(1);
       }
    
       comedia_CMD2.ID         = 0x0aaa;
       comedia_CMD2.Parameter1 = 0x05;
       comedia_CMD2.Parameter2 = ( char )( sb.st_size );
       comedia_CMD2.Parameter3 = ( char )( sb.st_size / 256 );
       comedia_CMD2.Parameter4 = ( char )( sb.st_size / 256 / 256 );
    
       printf("DataSize=%d\n",DataSize);
       printf("PKG.DataSize=%d\n",PKG.DataSize);
       printf("Pkg_num=%d\n",Pkg_num);
       printf("LastDataSize=%d\n",LastDataSize);
       printf("comedia_CMD2.ID=%d\n",comedia_CMD2.ID);
       printf("comedia_CMD2.Parameter1=%d\n",comedia_CMD2.Parameter1);
       printf("comedia_CMD2.Parameter2=%d\n",comedia_CMD2.Parameter2);
       printf("comedia_CMD2.Parameter3=%d\n",comedia_CMD2.Parameter3);
       printf("comedia_CMD2.Parameter4=%d\n",comedia_CMD2.Parameter4);
    
       InitPackage();
       if((sendbytes=send(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1){
        perror("send");
        exit(1);
       }
       printf("send %d bytes\n",sendbytes);
       //   static BOOL bDone;
       //   static int iIndex,iTemp;
       bDone = FALSE;
       iIndex = 0;
       while(!bDone)
       {
        printf("start to receive\n");
        if((iTemp=recv(sockfd,&comedia_CMD2,sizeof(_comedia_CMD),0))==-1)
        {
         bDone = TRUE;
         perror("recv");
         printf("\ntcp read error!\n");
         exit(1);
        }
        printf("recv %d bytes\n",iTemp);
        iIndex += iTemp;
        if( iIndex >= 6 )
        {
         iIndex = 0;
         if( comedia_CMD2.ID == 0x0eaa )
         {
          if( comedia_CMD2.Parameter3 == (char)0xf0
            && comedia_CMD2.Parameter4 == (char)0xf0 )
          {
           //bDataOK = FALSE;
           printf( "\nsend Image id = %d.\n", PKG2.ID );
           bDone = TRUE;
          }
          else
          {
           if( TRUE )
           {
            printf( "\nsend Image id = %d.\n", comedia_CMD2.Parameter3 );
            memcpy(&PKG2,img_addr2 + comedia_CMD2.Parameter3 * 512, sizeof( _PKG ) );
            memcpy(&SendPkg.m_Pkg,&PKG2,sizeof(_PKG));
            printf("\nGH_PKG size= %d\n",sizeof(GH_PKG));
            printf("\n_PKG size= %d\n",sizeof(_PKG));
            if((iTemp=send(sockfd,&SendPkg,sizeof(GH_PKG),0))==-1){
             printf("\ntcp write error!\n");
             perror("send");
             exit(1);
            }
           }
          }
         }
        }
       }
       close(sockfd);
       free(img_addr2);
       img_addr2 = NULL;
       if(pthread_mutex_unlock(&mutex)!=0){
        perror("pthread_mutex_unlock");
       }
       else
        printf("send image pthread stop\n");
       sem_post(&send_img);
       sleep(1);
       //pthread_exit(0);
      }
     }
    }
    

     

    展开全文
  • ubuntu linux编译运行mjpg-streamer步骤 1. 安装libjpeg库 ...#sudo apt-get install libjpeg62-dev ...2.插上免驱摄像头(uvc webcamera),ubuntu会生成一个/dev/videoX的设备 ... 如这个的图像了呢?
  • 网络传真机是将待传真的图、文稿件等自动扫描成图像文件,然后通过网络传真协议将数据文件发到...本文设计的网络传真图像传输系统可以将传真数据通过Inte-rnet网络发送到目标端,不但速度快而且可以有效地节省网络费用
  • 无线多媒体传感网络图像传输,宗庆福 ,,无线传感器网络是计算机科学技术的一个新的研究领域,它己逐渐成为工业界及学术界的一个研究热点。无线传感器网络集成了传感器、
  • 单片机图像采集与网络传输、电子技术,开发板制作交流
  • 本文设计的网络传真图像传输系统可以将传真数据通过Inte-rnet网络发送到目标端,不但速度快,而且可以有效地节省网络费用。也称电子传真。它整合了电话网、智能网和互联网技术。能通过互联网发送和接收传真,不需要...
  • 基于GPRS网络图像传输自适应算法及实现,朱丽军,刘高平,根据通用分组无线业务(general packet radio service,GPRS)网络的特点,提出了一种传输控制协议(transfer control protocol, TCP)和用户数据报协�
  • 基于移动自组织网络图像传输系统优化研究,杨天昊,李文生,无线自组织网络是物联网发展中网络结构的发展方向,该网络可以将若干独立可移动节点连接起来形成一个自发现,自寻路的移动网络
  • python opencv 图像网络传输

    千次阅读 2018-12-02 09:25:37
    本代码主要实现的是利用网络传输图片,用在我的树莓派项目之上。该项目在PC上运行服务端,树莓派上运行客户端,两者连接到同一局域网中,修改代码中的IP地址,就可以实现将树莓派采集到的图像数据实时传输到PC端。先...
  • 本代码主要实现的是利用网络传输图片,用在我的树莓派项目之上。该项目在PC上运行服务端,树莓派上运行客户端,两者连接到同一局域网中,修改代码中的IP地址,就可以实现将树莓派采集到的图像数据实时传输到PC端。先...
  • 无线图像传输系统从应用层面来说分为两大类,一是固定点的图像监控传输系统,二是移动视频图像传输系统。  固定点的无线图像监控传输系统,主要应用在有线闭路监控不便实现的场合,比如港口码头的监控系统、河流...
  • 本文设计的网络传真图像传输系统可以将传真数据通过Inte-rnet网络发送到目标端,不但速度快,而且可以有效地节省网络费用。也称电子传真。它整合了电话网、智能网和互联网技术。能通过互联网发送和接收传真,不需要...
  • 基于网络传输的实时图像融合系统设计
  • python opencv socket 图像网络传输

    千次阅读 2019-08-07 10:15:40
    本代码主要实现的是利用网络传输图片,用该代码稍加修改就可以传输其他的信息,当然服务端,客户端也可以同时在PC上运行,以验证结果。所以本质还是希望读者借此代码可以了解python的socket编程。代码意义已在注释中...
  • 传统的远距离监控、图像传输一般采用专门光缆或微波进行传递,容易受到地形和线路的限制,且造价极高,一般用户难以接受,因此,不易推广应用。 目前,公共电话网(PSTN)已普及全国,如果远程监控传输系统与一般的...
  • 4.使用Flatten to String.vi对图像进行平化,然后通过DataSocket 写函数传输平化后的比特字符串. 在接收端, 接收到的字符串需要使用Unflatten from String.vi进行去平化以在图像显示控件中显示. 参考链接:htt...
  • 矿井下无线多媒体传感网络簇内簇间的图像传输,何君燕,陈明,随着监测环境的日趋复杂与多变,传统传感器网络所获取的简单数据已经不能满足人们对环境监测的全面需求。将信息量丰富的图像、音
  • 实现了在多障碍物环境下的无线传感器网络中的图像传输.传统的图像传输均采用有线的方式.随着无线通信技术的发展,它也被用来传榆图像.但是这些最初的无线传输技术只能够点对点传输、对硬件要求高、成本昂贵.在无线...
  • 是几年前做比赛的时候做的一个监控系统,当时做这个图像传输的确花费了很多时间,开发软件是LabVIEW,现在分享出源码希望可以帮助到需要的人。 主要功能包括:简单的图像处理、显示,TCP/IP协议通讯,各种监控指标,...
  • 传输一幅分辨率为640X480,6.5万色的照片(图像),假设采用数据传输速度为56kb/s,大约需要的 时间是( )。 A. 34.82s B. 42.86s C. 85.71s D. 87.77s 看到有解答: 640*480*16/(56*1000)=87.77 有...
  • 主要针对应急通信系统中图象传输进行探讨。  应急通信有自己的一些特点,时效性、保密性、互通性,包括需要适应这样卫星通信等各种无线电路的特点,同时应该具备一些简单并且非常灵活的组网能力。  时效性:一旦...
  • 在研发B/S视频系统时候涉及到了图片在网络中的传输,研究了一些资料,也积累了部分经验:一。序列化后传输图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存。但是除了这样还有别的...
  • rtsp实时图像传输

    2018-04-14 14:03:27
    利用rtsp技术实现了视频流的直播,采用的平台是海思hi3516a的linux系统,接收部分利用远端网络的vlc工具实现解码播放,延时大概在300ms左右。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,629
精华内容 1,051
关键字:

网络图像传输