This commit is contained in:
louiscklaw
2025-02-01 01:19:51 +08:00
commit 3b0b154910
32597 changed files with 1171319 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
# OPENCV级联分类器训练
## 1.收集样本
### 正样本
- 转化成灰度可用_RGBtoGray.py脚本
- 转化成jpg格式可用_BMP2JPG.py脚本
- 分辨率20X20
- 从0开始按序号命名可用_ReName.py脚本
### 负样本
- 转化成灰度可用_RGBtoGray.py脚本
- 转化成jpg格式可用_BMP2JPG.py脚本
- 分辨率随意
- 需要明显多于正样本
- 从0开始按序号命名可用_ReName.py脚本
## 2.生成txt数据集路径表
- 生成文件可用_GenTXT.py脚本
- 拷贝到项目顶层目录可用_copy.py脚本
## 3.生成正样本数据集(负样本数据在下一步用于训练)
- 编辑step1.py根据自己的样本情况修改参数
- 执行step1.py脚本
## 4.训练
- 编辑step2.py根据自己的样本情况修改参数
- 执行step2.py脚本
## 3.得到模型
- 进入xml文件夹里面就有训练各个层数的模型
## 5.示范
```python
import cv2
# 读取待检测的图像
image = cv2.imread('12.jpg')
# 获取 XML 文件,加载人脸检测器
faceCascade = cv2.CascadeClassifier('cascade.xml')
# 色彩转换,转换为灰度图像
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# 调用函数 detectMultiScale
faces = faceCascade.detectMultiScale(gray,scaleFactor = 1.15,minNeighbors = 5,minSize = (5,5))
#print(faces)
# 打印输出的测试结果
print("发现{0}个人脸!".format(len(faces)))
# 逐个标注人脸
for(x,y,w,h) in faces:
cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2) #矩形标注
#cv2.circle(image,(int((x+x+w)/2),int((y+y+h)/2)),int(w/2),(0,255,0),2)
# 显示结果
cv2.imshow("dect",image)
# 保存检测结果
cv2.imwrite("re.jpg",image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```