GroupA_何敬治/Client/何敬治/document/历史回放功能模块文档.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupA_何敬治/Server/兰天翔/document/【第三版】日志-版本管理.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupA_何敬治/Server/崔雨/document/CNN模型搭建 -图像管理.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupA_何敬治/公共/脸谱项目-项目计划表.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Client/周浩/code/存放代码.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Client/周浩/document/考勤识别与管理.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Client/石蕊/code/test_fp_login/test_fp_login.pro.user | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Client/石蕊/document/注册、登录、权限管理.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Public/脸谱-项目计划表-B组.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Server/卢飞鹏/document/~$志封装、生成.docx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GroupB_马喜龙/Server/卢飞鹏/document/日志封装、生成.docx | 补丁 | 查看 | 原始文档 | blame | 历史 |
GroupA_ºÎ¾´ÖÎ/Client/ºÎ¾´ÖÎ/document/ÀúÊ·»Ø·Å¹¦ÄÜÄ£¿éÎĵµ.docxBinary files differ
GroupA_ºÎ¾´ÖÎ/Server/À¼ÌìÏè/document/¡¾µÚÈý°æ¡¿ÈÕÖ¾-°æ±¾¹ÜÀí.docxBinary files differ
GroupA_ºÎ¾´ÖÎ/Server/´ÞÓê/document/CNNÄ£Ðʹ -ͼÏñ¹ÜÀí.docxBinary files differ
GroupA_ºÎ¾´ÖÎ/¹«¹²/Á³Æ×ÏîÄ¿-ÏîÄ¿¼Æ»®±í.xlsxBinary files differ
GroupB_ÂíϲÁú/Client/ÖܺÆ/code/´æ·Å´úÂë.txt
@@ -0,0 +1,122 @@ #include "stdafx.h" #include <iostream> #include <opencv2/opencv.hpp> #if defined(_WIN32) #include <winsock2.h> #include <ws2tcpip.h> #pragma comment(lib, "ws2_64.lib") #endif // æè·æå头å¾å cv::Mat captureImage() { cv::VideoCapture cap(0); // æå¼é»è®¤æå头ï¼å¯æéæ´æ¹åæ°éæ©å ¶ä»æå头 if (!cap.isOpened()) { std::cerr << "æ æ³æå¼æå头" << std::endl; return cv::Mat(); } cv::Mat frame; cap >> frame; cap.release(); return frame; } // è¿æ¥æå¡ç«¯å½æ° bool connectToServer(SOCKET& clientSocket) { // é ç½®æå¡ç«¯å°åä¿¡æ¯ sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(8888); // 端å£å·8888ï¼å¯æéä¿®æ¹ // 使ç¨inet_ptonæ¿æ¢inet_addr char ipAddress[] = "127.0.0.1"; // æ¬å°åç¯å°åï¼ä¹å¯æ¿æ¢ä¸ºçå®IPï¼è¿éå®ä¹ä¸ºå符æ°ç» int inetResult = inet_pton(AF_INET, ipAddress, &serverAddr.sin_addr); if (inetResult <= 0) { std::cerr << "IPå°å转æ¢å¤±è´¥" << std::endl; return false; } // åå»ºå¥æ¥å clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (clientSocket == INVALID_SOCKET) { std::cerr << "åå»ºå¥æ¥å失败" << std::endl; #if defined(_WIN32) WSACleanup(); #endif return false; } // è¿æ¥æå¡ç«¯ if (connect(clientSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) { std::cerr << "è¿æ¥æå¡ç«¯å¤±è´¥" << std::endl; #if defined(_WIN32) closesocket(clientSocket); WSACleanup(); #endif return false; } return true; } // å°å¾çæ°æ®åéå°æå¡ç«¯å½æ° void sendImage(SOCKET socket, const cv::Mat& image) { std::vector<uchar> buffer; cv::imencode(".jpg", image, buffer); // å°å¾åç¼ç 为 JPEG æ ¼å¼ï¼æ¹ä¾¿ä¼ è¾ // åéæ°æ®é¿åº¦ä¿¡æ¯ï¼å设æå¡ç«¯æè¿ä¸ªçº¦å®æ¥æ¥æ¶ï¼ int bufferSize = buffer.size(); send(socket, (const char*)&bufferSize, sizeof(bufferSize), 0); // åéå¾åæ°æ®æ¬èº« send(socket, (const char*)buffer.data(), buffer.size(), 0); } // 仿å¡ç«¯æ¥æ¶æ¶æ¯å½æ° std::string receiveMessage(SOCKET socket) { const int bufferSize = 1024; char buffer[bufferSize]; int bytesReceived = recv(socket, buffer, bufferSize - 1, 0); if (bytesReceived > 0) { buffer[bytesReceived] = '\0'; // æ·»å åç¬¦ä¸²ç»æç¬¦ return std::string(buffer); } return ""; } int main() { #if defined(_WIN32) // åå§åWinsockåº WSADATA wsaData; int result = WSAStartup(MAKEWORD(2, 2), &wsaData); if (result != 0) { std::cerr << "WSAStartup 失败: " << result << std::endl; return -1; } #endif SOCKET clientSocket; if (!connectToServer(clientSocket)) { return -1; } cv::Mat image = captureImage(); if (image.empty()) { // å ³é奿¥åå¹¶æ¸ çï¼Windowsä¸ï¼ #if defined(_WIN32) closesocket(clientSocket); WSACleanup(); #endif return -1; } sendImage(clientSocket, image); std::string receiveResult = receiveMessage(clientSocket); std::cout << "æå¡ç»æï¼ " << receiveResult << std::endl; // å ³é奿¥åå¹¶æ¸ çï¼Windowsä¸ï¼ #if defined(_WIN32) closesocket(clientSocket); WSACleanup(); #else close(clientSocket); #endif return 0; } GroupB_ÂíϲÁú/Client/ÖܺÆ/document/¿¼ÇÚʶ±ðÓë¹ÜÀí.docxBinary files differ
GroupB_ÂíϲÁú/Client/ʯÈï/code/test_fp_login/test_fp_login.pro.user
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> <!-- Written by QtCreator 4.5.0, 2024-12-03T15:43:39. --> <!-- Written by QtCreator 4.5.0, 2024-12-04T10:18:06. --> <qtcreator> <data> <variable>EnvironmentId</variable> @@ -285,8 +285,8 @@ <value type="int" key="PE.EnvironmentAspect.Base">2</value> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">test_fp_login</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Qt/QtProject/test_fp_login/test_fp_login.pro</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">test_fp_login2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/AI project/è¸è°±AI_0817_1202/GroupB_马åé¾/Client/ç³è/code/test_fp_login/test_fp_login.pro</value> <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">test_fp_login.pro</value> GroupB_ÂíϲÁú/Client/ʯÈï/document/×¢²á¡¢µÇ¼¡¢È¨ÏÞ¹ÜÀí.docxBinary files differ
GroupB_ÂíϲÁú/Public/Á³Æ×-ÏîÄ¿¼Æ»®±í-B×é.xlsxBinary files differ
GroupB_ÂíϲÁú/Server/¬·ÉÅô/document/~$Ö¾·â×°¡¢Éú³É.docxBinary files differ
GroupB_ÂíϲÁú/Server/¬·ÉÅô/document/ÈÕÖ¾·â×°¡¢Éú³É.docxBinary files differ