From d692825526aa4cac4a1251ee4a877b45d8e03c2f Mon Sep 17 00:00:00 2001 From: wumu <mayi@mayi.com> Date: 星期日, 29 六月 2025 16:05:29 +0800 Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/智能网联_25-0305_617_v1 --- Client/徐蔓云/log/日志_徐蔓云_0627.doc | 0 Client/徐蔓云/log/日志_徐蔓云_0628.doc | 0 Server/梁博/log/日志_梁博_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc | 0 Server/汪卫军/log/日志_汪卫军_0626.doc | 0 Server/梁博/log/日志_梁博_0626.doc~日报提交 | 0 Server/汪卫军/code/ImageProcessor.h | 15 +++++++ Server/汪卫军/code/ImageProcessor.cpp | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 108 insertions(+), 0 deletions(-) diff --git "a/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc" "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc" new file mode 100644 index 0000000..4aa62aa --- /dev/null +++ "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc" Binary files differ diff --git "a/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc" "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc" new file mode 100644 index 0000000..bbad3b9 --- /dev/null +++ "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc" Binary files differ diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" new file mode 100644 index 0000000..7387a3b --- /dev/null +++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" Binary files differ diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244" new file mode 100644 index 0000000..7387a3b --- /dev/null +++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244" Binary files differ diff --git "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.cpp" "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.cpp" new file mode 100644 index 0000000..4148d4e --- /dev/null +++ "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.cpp" @@ -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; + } +} \ No newline at end of file diff --git "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.h" "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.h" new file mode 100644 index 0000000..2a5727b --- /dev/null +++ "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageProcessor.h" @@ -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; +}; \ No newline at end of file diff --git "a/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc" "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc" new file mode 100644 index 0000000..34957f4 --- /dev/null +++ "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc" Binary files differ -- Gitblit v1.8.0