#include <stdio.h>
#include <Winsock2.h>
#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 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(-1);
//创建窗口
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*10;//接收缓存10M
setsockopt(sockSrv,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
int COUNT=0;
char img[blocksize*32]={0};
int n;
while(1)
{
//memset(data.buf, 0, sizeof(char)*blocksize);
for( int i=0;i<32;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==33)
{
pFrame = cvCreateImageHeader(cvSize(640,480),IPL_DEPTH_8U,3);
cvSetData(pFrame,img,640*3);//由收到的数据建立一帧图像
cvShowImage("video",pFrame);
char c=cvWaitKey(1000/30);
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");
}
shgey
- 粉丝: 3
- 资源: 5
最新资源
- 学生抑郁数据集-可以用于分析学生的心理健康趋势
- 配电网优化模型matlab 考虑可转移负荷、中断负荷以及储能、分布式能源的33节点系统优化模型,采用改进麻雀搜索算法,以IEEE33节点为例,以风电运维成本、网损成本等为目标,得到系统优化结果,一共有
- 客户购物 (最新趋势) 数据集
- 运行在PostgreSQL中的AdventureWorks示例数据库
- 基于SpringBoot的在线考试系统源代码全套技术资料.zip
- 纯电动汽车两档ATM变速箱simulink模型,模型实现了两档AMT挡策略和挡过程仿真,内含详细文档和注释模型,可运行
- 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明
- MicrosoftEdge-X64-131.0.2903.99.rar
- 玩转西门子V90扭矩控制功能-各种扭矩参数功能详解.mp4
- 最新云夕打赏系统源码分享
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页