@[TOC]opencv训练自己的分类器
总结一下在学习训练自己的分类器所看到的有帮助的资料。
正样本:负样本=1:3,正样本尺寸:负样本尺寸=1:6的最终效果比较好,若是场景比较单一的正、负样本数量不必太多,也无需满足1:3。正负样本的处理可以参考这篇文章(利用的Python代码,处理起来比较简单) https://blog.csdn.net/YK_LaNce/article/details/100576560.
百度网盘自行下载:https://pan.baidu.com/s/14plhrufj2hQR3Es3aYqoIg.
自己参考之后所写代码:
#处理正样本
'''import cv2
path = "C:/pos/" #pos文件所在地址
for i in range(1, 27): #pos文件中图片数量
print(path+str(i)+'.jpg')
img = cv2.imread(path+str(i)+'.jpg', cv2.IMREAD_GRAYSCALE)
img5050=cv2.resize(img,(50,50)) #将pos文件中图片压缩为50*50
cv2.imshow("img", img5050)
cv2.waitKey(20)
cv2.imwrite('C:/pos1/'+str(i)+'.jpg', img5050)'''
#处理负样本
'''import cv2
path = "C:/neg/"
for i in range(1, 30):
print(path+str(i)+'.jpg')
img = cv2.imread(path+str(i)+'.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('C:/neg1/'+str(i)+'.jpg', img)'''
#生成描述文件
'''import os
def create_pos_n_neg():
for file_type in ['pos']: #运行一次之后修改pos为neg
for img in os.listdir(file_type):
if (file_type == 'neg'):
line = file_type + '/' + img + '\n'
with open('neg.txt', 'a') as f:
f.write(line)
elif (file_type == 'pos'):
line = file_type + '/' + img + ' 1 0 0 50 50\n'
with open('pos.txt', 'a') as f:
f.write(line)
if __name__ == '__main__':
create_pos_n_neg()'''
参考文章:https://www.jianshu.com/p/e35260f7cbf0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation. 该文章中含有一些报错问题及解决办法。
参考文章:https://www.jianshu.com/p/0afa9712c6d5.
自己所写代码如下:
#调用自带的摄像头
import cv2
import numpy as np
face_cascade=cv2.CascadeClassifier("cascade.xml")
cap=cv2.VideoCapture(0)
while True:
ret,frame=cap.read()
i=frame
gray=cv2.cvtColor(i,cv2.COLOR_BGR2GRAY)
faces=face_cascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5)
l=len(head) #人数
print (l)
for (x,y,w,h) in faces:
cv2.rectangle(i,(x,y),(x+w,y+h),(255,0,0),2)
cv2.putText(i,'face',(int(w/2+x),int(y-h/5)),cv2.FONT_HERSHEY_PLAIN,2.0,(255,255,255),2,1)
roi_gray = gray[y:y+h, x:x+w]
roi_color=i[y:y+h,x:x+w]
cv2.imshow("rstp",i)
if cv2.waitKey(1) & 0xFF ==ord('q'):
exit(0)
cap.release() #释放摄像头
cv2.destroyAllWindows() #关闭所有窗口
有关正负样本数量:https://www.jianshu.com/p/0afa9712c6d5.