这是opencv自带的人脸识别。
需要加载已经训练好的分类器,是.xml文件(其实图像识别不一定非要用deep learning,只不过用神经网络更好效果更好)
下载方法:https://blog.csdn.net/lusics/article/details/88149195
只需要将分类器和代码放到一起就可以
代码中,根据实际位置更改load路径。
import cv2
# 加载opencv自带的人脸分类器
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
faceCascade.load(r'C:\workspace\python\opencvTongueDetect\haarcascades\haarcascade_frontalface_alt2.xml')
cap = cv2.VideoCapture(0)
flag = 0
timeF = 10
while True:
flag+=1
ret, frame = cap.read()
img = frame.copy()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
rect = faceCascade.detectMultiScale(
gray,
scaleFactor=1.15,
minNeighbors=3,
minSize=(3,3),
flags = cv2.IMREAD_GRAYSCALE
)
#cv2.rectangle(frame, (20, 40), (30, 50), (0, 255, 0), 2)
for (x, y, w, h) in rect:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
#识别到物体后进行裁剪保存
#jiequ = img[x:(x+w), y:(y+h)]
#cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',jiequ) #save as jpg
#读取到保存图片
# if(flag%timeF==0):
# cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',frame) #save as jpg
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
其实我们可以自己训练分类器。
参照:舌头位置识别
1-收集特征图像
2-生成样本vec文件
3-训练分类器
使用提供的例程无法定位舌头,推断需要根据重新训练。
import cv2
# 加载训练好的分类器
faceCascade = cv2.CascadeClassifier("cascade.xml")
faceCascade.load(r'C:\workspace\python\opencvTongueDetect\xml\cascade.xml')
cap = cv2.VideoCapture(0)
flag = 0
timeF = 10
while True:
flag+=1
ret, frame = cap.read()
img = frame.copy()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
rect = faceCascade.detectMultiScale(
gray,
scaleFactor=1.15,
minNeighbors=3,
minSize=(3,3),
flags = cv2.IMREAD_GRAYSCALE
)
#cv2.rectangle(frame, (20, 40), (30, 50), (0, 255, 0), 2)
for (x, y, w, h) in rect:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
#识别到物体后进行裁剪保存
#jiequ = img[x:(x+w), y:(y+h)]
#cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',jiequ) #save as jpg
#读取到保存图片
# if(flag%timeF==0):
# cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',frame) #save as jpg
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()