码蚁0817班级,AI项目,脸谱,双团队架构,赛马机制
jta
2024-12-05 618f01fcc9c13ff736886775804968d4419ad3c7
Merge branch 'master' of ssh://115.28.86.8:29418/~admin/脸谱AI_0817_1202
7个文件已添加
4个文件已修改
128 ■■■■■ 已修改文件
GroupA_何敬治/Client/何敬治/document/历史回放功能模块文档.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupA_何敬治/Server/兰天翔/document/【第三版】日志-版本管理.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupA_何敬治/Server/崔雨/document/CNN模型搭建 -图像管理.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupA_何敬治/公共/脸谱项目-项目计划表.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Client/周浩/code/存放代码.txt 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Client/周浩/document/考勤识别与管理.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Client/石蕊/code/test_fp_login/test_fp_login.pro.user 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Client/石蕊/document/注册、登录、权限管理.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Public/脸谱-项目计划表-B组.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Server/卢飞鹏/document/~$志封装、生成.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupB_马喜龙/Server/卢飞鹏/document/日志封装、生成.docx 补丁 | 查看 | 原始文档 | blame | 历史
GroupA_ºÎ¾´ÖÎ/Client/ºÎ¾´ÖÎ/document/ÀúÊ·»Ø·Å¹¦ÄÜÄ£¿éÎĵµ.docx
Binary files differ
GroupA_ºÎ¾´ÖÎ/Server/À¼ÌìÏè/document/¡¾µÚÈý°æ¡¿ÈÕÖ¾-°æ±¾¹ÜÀí.docx
Binary files differ
GroupA_ºÎ¾´ÖÎ/Server/´ÞÓê/document/CNNÄ£Ðʹ -ͼÏñ¹ÜÀí.docx
Binary files differ
GroupA_ºÎ¾´ÖÎ/¹«¹²/Á³Æ×ÏîÄ¿-ÏîÄ¿¼Æ»®±í.xlsx
Binary 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/¿¼ÇÚʶ±ðÓë¹ÜÀí.docx
Binary 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/×¢²á¡¢µÇ¼¡¢È¨ÏÞ¹ÜÀí.docx
Binary files differ
GroupB_ÂíϲÁú/Public/Á³Æ×-ÏîÄ¿¼Æ»®±í-B×é.xlsx
Binary files differ
GroupB_ÂíϲÁú/Server/¬·ÉÅô/document/~$Ö¾·â×°¡¢Éú³É.docx
Binary files differ
GroupB_ÂíϲÁú/Server/¬·ÉÅô/document/ÈÕÖ¾·â×°¡¢Éú³É.docx
Binary files differ