一、安装环境:Windows7 64位系统
二、所需软件:
1、Anaconda3-2019.03-Windows-x86/64(根据电脑系统选择下载64bit还是32bit),下载地址:https://www.anaconda.com/distribution/#download-section
2、opencv_python,这里Python是64位的需要下载64位的模块,Python是32位的需要下载32位的模块,如果不匹配在Spyder调试Python时会出现错误;因为Python版本是3.7.3,64bit,所以我们选在下载:opencv_python-3.4.7+contrib-cp37-cp37m-win_amd64.whl,下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv(如果自己下载opencv安装或者命令行install opencv,容易出问题,具体没有探究)
三、安装过程
1、Anaconda安装,细节忘记了,印象中是默认安装
2、Anaconda环境变量设置,安装好环境变量会自动设置,如果没有自动设置就需要手动添加:我的电脑->属性->高级系统设置->环境变量->系统变量->Path,在Path后面添加(分号隔开)C:\ProgramData\Anaconda3\;C:\ProgramData\Anaconda3\Scripts\;C:\ProgramData\Anaconda3\Library\bin
3、Anaconda Evironments添加,Python版本选择最新安装的
4、在cmd命令行下安装opencv_python步骤:
1)activate opencv:先进入opencv的Evironment(一定要先进入之前创建的环境!读者也可以尝试一下不进入环境是否能成功)
2)进入“opencv_python-3.4.7+contrib-cp37-cp37m-win_amd64.whl”的文件目录,比如放在D盘根目录则:d:
3)运行命令:pip install opencv_python-3.4.7+contrib-cp37-cp37m-win_amd64.whl,安装成功(opencv_python相应文件会更新到“C:\ProgramData\Anaconda3\envs\opencv”路径下)
四、验证
1、cmd命令下进入python,输入import cv2,如果没报错则说明在cmd命令下opencv_python添加成功
2、打开Anaconda,在Home中选择opencv,然后点击Spyder下发按钮
3、打开spyder后,可以直接验证,下面是网上抄了一段捕捉人脸的分类器
# -*- coding: utf-8 -*-
Created on Mon Jul 29 17:05:14 2019
@author: rs1601
#catchpicture.py
import cv2
cap = cv2.VideoCapture(0)
num = 0
while cap.isOpened():
ret, frame = cap.read() #读取一帧数据
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#将图片转化成灰度
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
face_cascade.load('C:\ProgramData\Anaconda3\pkgs\libopencv-3.4.2-h20b85fd_0\Library\etc\haarcascades\haarcascade_frontalface_alt2.xml')#一定要告诉编译器文件所在的具体位置
'''此文件是opencv的haar人脸特征分类器'''
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
if len(faces) > 0:
for (x,y,w,h) in faces:
#将当前帧保存为图片
img_name = '%s/%d.jpg'%("F:\data\me", num)
image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
cv2.imwrite(img_name, image)
num += 1
if num > 1000: #如果超过指定最大保存数量退出循环
break
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
#显示当前捕捉到了多少人脸图片
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame,'num:%d'%(num),(x + 30,y + 30),font,1,(255,0,255),4)
#超过指定最大保存数量结束程序
if num > 1000 :break
#显示图像并等待10毫秒按键输入,输入‘q’退出程序
cv2.namedWindow('capture')
cv2.imshow("capture", frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
#释放摄像头并销毁所有窗口
cap.release()
cv2.destroyAllWindows()