OpenCV入门:Python中的计算机视觉利器
要给大家介绍一个超级强大的计算机视觉库 —— OpenCV。它是一个开源的跨平台计算机视觉库,可以帮助我们轻松处理图像和视频。无论是图像处理、目标检测还是人脸识别,OpenCV都能帮我们轻松实现。让我们开始这段有趣的视觉之旅吧!
1. OpenCV环境配置
我们需要安装OpenCV库。打开终端,输入以下命令:
1pip install opencv-python
安装完成后,我们先来测试一下环境:
1import cv2
2print(cv2.__version__) # 打印OpenCV版本
小贴士:建议使用虚拟环境来安装,避免包之间的依赖冲突。
2. 图像的基本操作
2.1 读取和显示图像
1import cv2
2import numpy as np
3
4# 读取图像
5img = cv2.imread('test.jpg')
6
7# 显示图像
8cv2.imshow('Image', img)
9cv2.waitKey(0) # 等待按键
10cv2.destroyAllWindows() # 关闭所有窗口
2.2 图像保存
1# 保存图像
2cv2.imwrite('new_image.jpg', img)
注意:imread()默认以BGR格式读取图像,而不是我们常见的RGB格式。
3. 图像处理基础
3.1 调整图像大小
1# 将图像调整为 300x200
2resized = cv2.resize(img, (300, 200))
3
4# 按比例缩放到原来的一半
5resized = cv2.resize(img, None, fx=0.5, fy=0.5)
3.2 图像转换
1# 转换为灰度图
2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
3
4# 高斯模糊
5blur = cv2.GaussianBlur(img, (5, 5), 0)
4. 绘制基本图形
1# 创建空白图像
2canvas = np.zeros((300, 300, 3), dtype=np.uint8)
3
4# 画线
5cv2.line(canvas, (0, 0), (300, 300), (0, 255, 0), 2)
6
7# 画矩形
8cv2.rectangle(canvas, (50, 50), (250, 250), (0, 0, 255), 2)
9
10# 画圆
11cv2.circle(canvas, (150, 150), 100, (255, 0, 0), -1) # -1表示填充
5. 实战小项目:简单的人脸检测
1def detect_face(image_path):
2 # 读取图像
3 img = cv2.imread(image_path)
4
5 # 转换为灰度图
6 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
7
8 # 加载人脸检测器
9 face_cascade = cv2.CascadeClassifier(
10 cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'
11 )
12
13 # 检测人脸
14 faces = face_cascade.detectMultiScale(gray, 1.1, 4)
15
16 # 在检测到的人脸周围画框
17 for (x, y, w, h) in faces:
18 cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
19
20 return img
小贴士:这个简单的人脸检测器适用于正面人脸,复杂场景可能需要更高级的算法。
实践练习
尝试读取一张自己的照片,转换为灰度图并保存。
在一张图片上画一个笑脸(提示:使用circle和line函数)。
使用上面的人脸检测代码,检测一张含有多个人脸的图片。
常见问题解答
图像没显示?检查文件路径是否正确,确保waitKey()被调用。
图像显示颜色不对?记住OpenCV使用BGR格式,需要时可以用cvtColor转换。
内存报错?记得及时释放资源,使用destroyAllWindows()关闭窗口。
小伙伴们,今天的Python学习之旅就到这里啦!OpenCV的功能远不止这些,我们今天学习的只是冰山一角。记得动手实践哦,有任何问题都可以在评论区问我。下期我们将探索更多有趣的OpenCV功能,敬请期待!祝大家学习愉快,Python学习节节高!