0.总结
这个部分的内容在于如何在电脑中配置opencv-python,以及介绍。
1.介绍
1.1 opencv
opencv项目1999年开始,2000年公布。
现在opencv支持很多语言C++,Python,Java等等。可以在很多平台上使用Windows,Linux,OS X,Android,IOS等等。
1.2 opencv-python
opencv-python是opencv的python的API接口。它结合了opencv的C++API接口和Python语言。
因为python的简单和可读性,而十分流行。
和其他语言C/C++相比,Python速度较慢,但是,Python可以容易地用C/C++来扩展。这个特性有助于在C/C++中编写计算密集型代码,并且为其创建Python包装器,然后可以将这些包装器来用作Python模块。因此,这个有两个优点:
1.它的后台实际是C++代码,所以我们的代码和原始C/C++代码一样快。
2.Python中代码非常容易
这就是opencv python的工作原理,它就是围绕原始C++实现的Python包装器。
Numpy的支持使任务变得非常容易,Numpy是一个高度优化的数值运算库。提供了一个MATLAB风格的语法。所有OpenCV数组结构都转变为Numpy数组。
opencv python教程
开始之前需要了解python和numpy,因为用opencv python编写优化代码,就必须具备良好的numpy知识。
2.ubuntu上opencv使用入门
2.1 Ubuntu上使用摄像头
1
| ls /dev/v* // 可以看到摄像头,例如/dev/video0,表示成功驱动摄像头
|
2.2如何安装应用程序显示摄像头捕捉到的视频
1 2
| sudo apt install camorama sudo apt install cheese //camorama/cheese分别是两款应用程序
|
2.3opencv操作方式
使用opencv需要使用pip来下载相关的包,但是下载源在国外,将下载源修改到国内就可以加速下载了。
1 2
| pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 //这个是使用清华的镜像源
|
上面是临时的方法,下面是永久的方法:
1 2 3 4 5 6 7
| mkdir ~/.pip vim ~/.pip/pip.conf
[global] index-url = http://mirrors.aliyun.com/pypi/simple [install] trusted-host = mirrors.aliyun.com
|
为了使用opencv需要使用python3中的包
1
| pip3 install opencv-python
|
之后需要相关的包也这样下载
1 2 3 4 5 6 7 8 9 10 11 12
| import cv2 path = "..." image = cv2.imread(paht) // 输入代操作的图片的路径 gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)// 灰度转换,降低计算强度 cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2) //对图片进行编辑,最后一个参数为画笔的大小 cv2.imshow("image-title",image) // 显示图像 cv2.waitKey(0) //注意要加上这一句要不然会看不见图片, //参数为延迟多少毫秒,当为0时,延迟无穷大秒 face_cascade = cv2.CascadeClassifier(...) //获取人脸识别的训练数据,来自Github上opencv/data/haarcascades
|
2.4人脸识别源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import cv2 image_path = "./pc1.png" facedata_path = "./haarcascade_frontalface_default.xml" face_cascade = cv2.CascadeClassifier(facedata_path) image = cv2.imread(image_path) gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow("Picture",image) cv2.waitKey(0) faces = face_cascade.detectMultiScale( gray, scaleFactor = 1.15, minNeighbors= 5, minSize = (5,5), flags = cv2.CASCADE_SCALE_IMAGE ) print('hello') print("find {0} face(s)!",format(len(faces))) for(x,y,w,h) in faces: cv2.circle(image,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2) cv2.imshow("Find Faces!",image) cv2.waitKey(0)
|