#打开图像的方法
# import cv2
#
# filename='./photo/tupian.png'
# img=cv2.imread(filename,0)
# cv2.imshow('图片',img)
# cv2.waitKey(0)#等待时长 直到键盘值为key的响应之后
#
# cv2.destroyAllWindows()
# #python中用opencv打开摄像头的方法
# import cv2
#
# cap=cv2.VideoCapture(0)#参数为0 表示打开内置摄像头 后边数字为几表示打开第几个摄像头 一般为0
#
# success, frame=cap.read()#第一个参数为状态 后边为所要展示的每一帧的图像
#
# while success and cv2.waitKey(1)==-1:
#
# cv2.imshow("Main Window", frame)
#
# success, frame=cap.read()
#
# cap.release() #释放cap对象
#
# cv2.destroyAllWindows() #销毁窗口
#-----------------------------------检测图片人脸---------------------
# import cv2
# import os
# # os.chdir('/Users/wangchenxu/Downloads')
#
#
# # 待检测的图片路径
# imagepath="./photo/me.png"
#
# image = cv2.imread(imagepath)
# # image=cv2.resize(imagee,(900,900))
# # gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#
#
# '''
# # 获取人脸识别训练数据
# q
# 对于人脸特征的一些描述,opencv在读取完数据后很据训练中的样品数据,
# 就可以感知读取到的图片上的特征,进而对图片进行人脸识别。
# xml数据下载,
# 参考:https://github.com/opencv/opencv/tree/master/data/haarcascades
# '''
# #产生一个检测器
# face_cascade = cv2.CascadeClassifier(r'./haarcascades/haarcascade_frontalface_default.xml')
#
# # 探测人脸
# # 根据训练的数据来对新图片进行识别的过程。
# faces = face_cascade.detectMultiScale(
# image,
# scaleFactor = 1.15,#每次图片缩小的比例
# minNeighbors = 5,#每次检测时,对检测点周边多少有效点同时进行检测,因为可能选取的监测点大小不一足而导致遗漏
# minSize = (5,5),#检测点的最小值,或者说检测点的最终值
# #flags = cv2.HAAR_SCALE_IMAGE
# )
#
# # 我们可以随意的指定里面参数的值,来达到不同精度下的识别。返回值就是opencv对图片的探测结果的体现。
#
# # 处理人脸探测的结果
# 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,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)
#
# cv2.imshow("image",image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
#---------------------------实时检测人脸------------------------------
import cv2
cap=cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier(r'./haarcascades/haarcascade_frontalface_default.xml')
while(True):
success,fram=cap.read()
gray=cv2.cvtColor(fram,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.15, # 每次图片缩小的比例
minNeighbors=5, # 每次检测时,对检测点周边多少有效点同时进行检测,因为可能选取的监测点大小不一足而导致遗漏
minSize=(5, 5), # 检测点的最小值,或者说检测点的最终值
# flags = cv2.HAAR_SCALE_IMAGE
)
print ("发现{0}个人脸!".format(len(faces)))
for(x,y,w,h) in faces:
cv2.rectangle(gray,(x,y),(x+w,y+w),(0,255,0),2)#用矩形做标记,参数分别为图像,矩形的左上坐标,右下坐标
# cv2.circle(image,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)
cv2.imshow('image',gray)
if cv2.waitKey(1) & 0xFF==ord('q'):
break
cap.release()
cv2.destroyAllWindows()
#---------------------------录制视频--------------------
cap=cv2.VideoCapture(0)
#设置编码格式,并创建videowrite对象
fourcc=cv2.VideoWriter_fourcc(*'XVID') #编码方式 'MJPG' 'XVID'
outfile=cv2.VideoWriter('luzhi.avi',fourcc,25.,(640,480))
while(True):
success,fram=cap.read()
# fram=cv2.flip(fram,1) #3个参数 0为垂直翻转 1为水平翻转 -1为垂直水平翻转
font=cv2.FONT_HERSHEY_SIMPLEX#往摄像头中添加字体
cv2.putText(fram,'lalala',(10,500),font,4,(255,192,203),10) #参数分别为文件、想添加的内容、位置、字体,字体大小,颜色、字体粗细
#写入文件
outfile.write(fram)
cv2.imshow('fram',fram)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()