您的位置:首页 > 娱乐 > 明星 > 企业宣传片文字稿_网络运维网站_关键一招_百度指数数据分析平台入口

企业宣传片文字稿_网络运维网站_关键一招_百度指数数据分析平台入口

2025/4/20 23:38:36 来源:https://blog.csdn.net/m0_57538342/article/details/144574720  浏览:    关键词:企业宣传片文字稿_网络运维网站_关键一招_百度指数数据分析平台入口
企业宣传片文字稿_网络运维网站_关键一招_百度指数数据分析平台入口

人脸检测

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;int main() {// 定义用于存储图像的Mat对象Mat frame, image;// 定义用于存储单个人脸矩形框的Rect对象Rect faceRect;// 定义用于存储所有检测到的人脸矩形框的vector对象vector<cv::Rect> faceRects;// 读取图片文件
frame = imread("D:/black.jpg");// 检查图片是否成功读取
if (frame.empty()) 
{cout << "Could not open or find the image!" << endl;return -1;
}// 将彩色图像转换为灰度图像
cvtColor(frame, image, cv::COLOR_BGR2GRAY);// 对灰度图像进行直方图均衡化处理
equalizeHist(image, image);使用`equalizeHist`函数对灰度图像`image`进行直方图均衡化处理。
- 直方图均衡化可以增强图像的对比度,使得图像的亮度分布更加均匀。// 定义CascadeClassifier对象,用于加载和使用Haar级联分类器
CascadeClassifier face_Cascade;
// 加载Haar级联分类器XML文件
if (!face_Cascade.load("./haarcascade_frontalface_alt.xml")) 
{cout << "Error loading cascade xml" << endl;return -1;
}// 使用级联分类器在灰度图像中检测人脸
face_Cascade.detectMultiScale(image, faceRects, 1.05, 2, cv::CASCADE_SCALE_IMAGE, cv::Size(image.cols / 10, image.rows / 10));// 遍历所有检测到的人脸矩形框,并在原图像上绘制矩形
for (int i = 0; i < faceRects.size(); i++) {faceRect = faceRects[i];cv::rectangle(frame, faceRect, cv::Scalar(255, 255, 0), 2);
}// 显示处理后的图像
cv::imshow("detection", frame);
// 等待用户按键
cv::waitKey(0);
// 返回0,表示程序成功结束
return 0;}- 使用`detectMultiScale`函数在灰度图像`image`中检测人脸。
- `faceRects`用于存储检测到的所有人脸矩形框。
- `1.05`是缩放因子(scaleFactor),表示在每次扫描时图像的缩放比例。
- `2`是最小邻域数(minNeighbors),表示每个候选矩形框需要保留的最小邻域数。
- `cv::CASCADE_SCALE_IMAGE`表示使用图像缩放的方式进行检测。
- `cv::Size(image.cols / 10, image.rows / 10)`是最小检测区域大小(minSize),表示检测到的目标的最小尺寸。1. **`image`**:- 类型: `const Mat&`- 作用: 输入的灰度图像,通常是对原始图像进行灰度转换和直方图均衡化后的图像。- 示例: `image` 是经过 `cvtColor` 和 `equalizeHist` 处理后的灰度图像。
2. **`faceRects`**:- 类型: `vector<Rect>&`- 作用: 输出参数,用于存储检测到的所有目标(如人脸)的矩形框。- 示例: `faceRects` 是一个 `vector<Rect>` 对象,检测到的人脸区域会存储在这个向量中。
3. **`1.05` (scaleFactor)**:- 类型: `double`- 作用: 缩放因子,表示在每次图像扫描时图像的缩放比例。- 示例: `1.05` 表示每次扫描时图像的大小增加 5%。- 说明: 较大的缩放因子会加快检测速度,但可能会漏检较小的目标。
4. **`2` (minNeighbors)**:- 类型: `int`- 作用: 最小邻域数,表示每个候选矩形框需要保留的最小邻域数。- 示例: `2` 表示每个候选矩形框必须至少有 2 个邻居矩形框才能被保留。- 说明: 较大的最小邻域数会减少误检,但可能会漏检一些目标。
5. **`cv::CASCADE_SCALE_IMAGE` (flags)**:- 类型: `int`- 作用: 标志位,用于指定检测过程中的某些选项。- 示例: `cv::CASCADE_SCALE_IMAGE` 表示图像大小在检测过程中会改变,而不是检测窗口的大小。- 说明: 这个标志位可以帮助提高检测的准确性。
6. **`cv::Size(image.cols / 10, image.rows / 10)` (minSize)**:- 类型: `const Size&`- 作用: 检测到的目标的最小尺寸。- 示例: `cv::Size(image.cols / 10, image.rows / 10)` 表示检测到的人脸最小尺寸为图像宽度和高度的 1/10。- 说明: 较小的最小尺寸可能会检测到更多的目标,但可能会增加误检的可能性

视频人脸识别

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;int main() {cv::VideoCapture video("D:/leijun.mp4");if (!video.isOpened()) {cerr << "无法打开视频文件或摄像头" << endl;return -1;}cv::CascadeClassifier face_Cascade;if (!face_Cascade.load("./haarcascade_frontalface_alt.xml")) {cerr << "加载人脸分类器失败" << endl;return -1;}cv::namedWindow("Face Detection System");while (true) {cv::Mat frame;video >> frame;if (frame.empty()) {break;}// 缩放视频帧,设置目标大小cv::Size newSize(frame.cols /5, frame.rows /5); // 将帧缩小到原来的50%cv::Mat resizedFrame;cv::resize(frame, resizedFrame, newSize, 0, 0, cv::INTER_LINEAR); // 使用线性插值法进行缩放cv::Mat gray_image;cv::cvtColor(resizedFrame, gray_image, cv::COLOR_BGR2GRAY);cv::equalizeHist(gray_image, gray_image);vector<cv::Rect> faceRects;int minSize_1 = min(resizedFrame.cols, resizedFrame.rows) / 10;face_Cascade.detectMultiScale(gray_image, faceRects, 1.28, 2, 0, cv::Size(minSize_1, minSize_1));for (int i = 0; i < faceRects.size(); i++){cv::Rect faceRect = faceRects[i];cv::rectangle(resizedFrame, faceRect, cv::Scalar(0, 255, 0), 2);}cv::imshow("Face Detection System", resizedFrame);char key = (char)cv::waitKey(5);if (key == 27) { // 按下ESC键退出break;}}video.release();cv::destroyWindow("Face Detection System");return 0;
}

haarcascade_frontalface_alt.xml在opencv官方文件位置

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com