wumu
2025-06-29 d692825526aa4cac4a1251ee4a877b45d8e03c2f
Merge branch 'master' of ssh://115.28.86.8:29418/~admin/智能网联_25-0305_617_v1
7个文件已添加
108 ■■■■■ 已修改文件
Client/徐蔓云/log/日志_徐蔓云_0627.doc 补丁 | 查看 | 原始文档 | blame | 历史
Client/徐蔓云/log/日志_徐蔓云_0628.doc 补丁 | 查看 | 原始文档 | blame | 历史
Server/梁博/log/日志_梁博_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc 补丁 | 查看 | 原始文档 | blame | 历史
Server/梁博/log/日志_梁博_0626.doc~日报提交 补丁 | 查看 | 原始文档 | blame | 历史
Server/汪卫军/code/ImageProcessor.cpp 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/汪卫军/code/ImageProcessor.h 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/汪卫军/log/日志_汪卫军_0626.doc 补丁 | 查看 | 原始文档 | blame | 历史
Client/ÐìÂûÔÆ/log/ÈÕÖ¾_ÐìÂûÔÆ_0627.doc
Binary files differ
Client/ÐìÂûÔÆ/log/ÈÕÖ¾_ÐìÂûÔÆ_0628.doc
Binary files differ
Server/Áº²©/log/ÈÕÖ¾_Áº²©_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc
Binary files differ
Server/Áº²©/log/ÈÕÖ¾_Áº²©_0626.doc~ÈÕ±¨Ìá½»
Binary files differ
Server/ÍôÎÀ¾ü/code/ImageProcessor.cpp
New file
@@ -0,0 +1,93 @@
// ImageProcessor.cpp - ç…§ç‰‡å¤„理模块实现
#include "stdafx.h"
#include "ImageProcessor.h"
#include <opencv2/opencv.hpp>
ImageProcessor::ImageProcessor() {}
ImageProcessor::~ImageProcessor() {}
bool ImageProcessor::CropFace(const unsigned char* imageData, int width, int height,
    unsigned char*& faceData, int& faceWidth, int& faceHeight) const {
    try {
        // åˆ›å»ºOpenCV图像
        cv::Mat image(height, width, CV_8UC3, const_cast<unsigned char*>(imageData));
        // åŠ è½½äººè„¸æ£€æµ‹å™¨
        cv::CascadeClassifier face_cascade;
        if (!face_cascade.load(cv::samples::findFile("haarcascade_frontalface_alt.xml"))) {
            std::cerr << "无法加载人脸检测器" << std::endl;
            return false;
        }
        // è½¬æ¢ä¸ºç°åº¦å›¾
        cv::Mat gray;
        cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
        cv::equalizeHist(gray, gray);
        // æ£€æµ‹äººè„¸
        std::vector<cv::Rect> faces;
        face_cascade.detectMultiScale(gray, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, cv::Size(30, 30));
        if (faces.empty()) {
            return false;
        }
        // èŽ·å–ç¬¬ä¸€ä¸ªæ£€æµ‹åˆ°çš„äººè„¸
        cv::Rect face_rect = faces[0];
        cv::Mat face = image(face_rect);
        // ä¿å­˜äººè„¸æ•°æ®
        faceWidth = face.cols;
        faceHeight = face.rows;
        size_t dataSize = faceWidth * faceHeight * 3;
        faceData = new unsigned char[dataSize];
        memcpy(faceData, face.data, dataSize);
        return true;
    }
    catch (const std::exception& e) {
        std::cerr << "裁剪人脸失败: " << e.what() << std::endl;
        return false;
    }
}
bool ImageProcessor::EnhanceQuality(unsigned char* imageData, int width, int height) const {
    try {
        // åˆ›å»ºOpenCV图像
        cv::Mat image(height, width, CV_8UC3, imageData);
        // å›¾åƒå¢žå¼ºå¤„理
        cv::Mat enhanced;
        cv::GaussianBlur(image, enhanced, cv::Size(0, 0), 3);
        cv::addWeighted(image, 1.5, enhanced, -0.5, 0, enhanced);
        // å¤åˆ¶å›žåŽŸå§‹æ•°æ®
        memcpy(imageData, enhanced.data, width * height * 3);
        return true;
    }
    catch (const std::exception& e) {
        std::cerr << "增强图像质量失败: " << e.what() << std::endl;
        return false;
    }
}
bool ImageProcessor::ValidateImage(const unsigned char* imageData, int width, int height) const {
    try {
        // ç®€å•验证:检查图像尺寸是否合理
        if (width < 10 || height < 10) {
            return false;
        }
        // è¿™é‡Œå¯ä»¥æ·»åŠ æ›´å¤æ‚çš„å›¾åƒéªŒè¯é€»è¾‘
        // ä¾‹å¦‚:检查图像是否模糊、是否包含人脸等
        return true;
    }
    catch (const std::exception& e) {
        std::cerr << "验证图像失败: " << e.what() << std::endl;
        return false;
    }
}
Server/ÍôÎÀ¾ü/code/ImageProcessor.h
New file
@@ -0,0 +1,15 @@
// ImageProcessor.h - ç…§ç‰‡å¤„理模块
#pragma once
#include <string>
#include "FaceImageManager.h"
class ImageProcessor {
public:
    ImageProcessor();
    ~ImageProcessor();
    bool CropFace(const unsigned char* imageData, int width, int height,
        unsigned char*& faceData, int& faceWidth, int& faceHeight) const;
    bool EnhanceQuality(unsigned char* imageData, int width, int height) const;
    bool ValidateImage(const unsigned char* imageData, int width, int height) const;
};
Server/ÍôÎÀ¾ü/log/ÈÕÖ¾_ÍôÎÀ¾ü_0626.doc
Binary files differ