#include <stdio.h>
#include <Winsock2.h>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
const int blocksize=43200;
// 定义包结构
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 sockSrv=socket(AF_INET,SOCK_DGRAM,0);
if (INVALID_SOCKET == sockSrv ) {
printf("Socket 创建失败,Exit!");
return;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
if(-1==bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))){
printf("Server bind erro!\n");
return;
}
//listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
//声明IplImage指针
IplImage* pFrame = NULL;
//pFrame->imageSize=
//获取摄像头
//CvCapture* pCapture = cvCreateCameraCapture(CV_CAP_DSHOW);
//创建窗口
cvNamedWindow("video", 1);
//显示视屏
/* while(1)
{
pFrame=cvQueryFrame( pCapture );
if(!pFrame)break;
cvShowImage("video",pFrame);
char c=cvWaitKey(33);
if(c==27)break;
}
*/
// SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
int nRecvBuf=1024*1024*50;//接收缓存10M
setsockopt(sockSrv,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
int COUNT=0;
char img[blocksize *64]={0};
int n;
while(1)
{
//memset(data.buf, 0, sizeof(char)*blocksize);
for( int i=0;i<64;i++)
{
//Sleep(1000);
n=recvfrom(sockSrv,(char *)(&data),blocksize+4,0,(SOCKADDR*)&addrClient,&len);
//Sleep(1000);
//printf("%d\n",n);
COUNT=COUNT+data.flag;
for(int k=0;k<blocksize;k++)
{
img[i*blocksize+k]=data.buf[k];
}
if(data.flag==2) //data.flag==2是一帧中的最后一个数据块
{
if(COUNT==65)
{
pFrame = cvCreateImageHeader(cvSize(1280,720),IPL_DEPTH_8U,3);
cvSetData(pFrame,img,1280*3);//由收到的数据建立一帧图像
cvShowImage("video",pFrame);
cvReleaseImage(&pFrame);
char c=cvWaitKey(25);
if(c==27)break;
//printf("frame!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
}
else
{
COUNT=0;
i=-1;
}
// j++;
}
}
}
/*
while(1)
{
recv(sockConn,pFrame->imageData,pFrame->imageSize,0);
if(!pFrame)break;
cvShowImage("video",pFrame);
}*/
//closesocket(sockConn);
cvDestroyWindow("video");
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
opencv+UDP视频传输.zip (2个子文件)
client.cpp 2KB
server.cpp 3KB
共 2 条
- 1
js8878
- 粉丝: 18
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论4