#include #include #include #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"opencv_world3410.lib") #pragma comment(lib,"opencv_world3410d.lib") using namespace cv; using namespace std; void initialization(); void findIP(char* ip, int size) { WORD v = MAKEWORD(1, 1); WSADATA wsaData; WSAStartup(v, &wsaData); // 加载套接字库 struct hostent* phostinfo = gethostbyname(""); char* p = inet_ntoa(*((struct in_addr*)(*phostinfo->h_addr_list))); strncpy_s(ip,size - 1, p,size - 1); ip[size - 1] = '\0'; WSACleanup(); } int main() { //定义长度变量 int send_len = 0; int recv_len = 0; //定义发送缓冲区和接受缓冲区 char send_buf[100]; char recv_buf[100]; char ip[20] = { 0 }; findIP(ip, sizeof(ip));//找自己的ip; cout << "您当前的ip地址" <> M; while (1) { if (*M == '1') { VideoCapture capture(0); Mat edges; Mat frame; //定义一个Mat变量,用于存储每一帧的图像 capture >> frame; //读取当前帧 cvtColor(frame, edges, CV_BGR2GRAY);//彩色转换成灰度 blur(edges, edges, Size(7, 7));//模糊化 Canny(edges, edges, 0, 30, 3);//边缘化 imshow("读取被边缘后的视频", frame); //显示当前帧 int image_size = frame.cols * frame.rows; char* imageData = new char[image_size]; char* imageData2 = new char[image_size]; imageData = (char*)frame.data; send_len = send(s_server, imageData, sizeof(imageData), 0); waitKey(30); //延时30ms recv(s_server, imageData2, sizeof(imageData), 0); Mat matImg = Mat(frame.rows, frame.cols, CV_8UC1, imageData2, 0); imshow("读取被边缘后的视频", matImg); //显示当前帧 } else { cout << "请输入发送信息:"; cin >> send_buf; send_len = send(s_server, send_buf, 100, 0); if (send_len < 0) { cout << "发送失败!" << endl; break; } recv_len = recv(s_server, recv_buf, 100, 0); if (recv_len < 0) { cout << "接受失败!" << endl; break; } else { cout << "服务端信息:" << recv_buf << endl; } } } //关闭套接字 closesocket(s_server); //释放DLL资源 WSACleanup(); return 0; } void initialization() { //初始化套接字库 WORD w_req = MAKEWORD(2, 2);//版本号 WSADATA wsadata; int err; err = WSAStartup(w_req, &wsadata); if (err != 0) { cout << "初始化套接字库失败!" << endl; } else { cout << "初始化套接字库成功!" << endl; } //检测版本号 if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wHighVersion) != 2) { cout << "套接字库版本号不符!" << endl; WSACleanup(); } else { cout << "套接字库版本正确!" << endl; } //填充服务端地址信息 }