OpenCV入门:Python中的计算机视觉利器

文摘   2024-12-04 12:15   辽宁  

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

小贴士:这个简单的人脸检测器适用于正面人脸,复杂场景可能需要更高级的算法。

实践练习

  1. 尝试读取一张自己的照片,转换为灰度图并保存。

  2. 在一张图片上画一个笑脸(提示:使用circle和line函数)。

  3. 使用上面的人脸检测代码,检测一张含有多个人脸的图片。

常见问题解答

  1. 图像没显示?检查文件路径是否正确,确保waitKey()被调用。

  2. 图像显示颜色不对?记住OpenCV使用BGR格式,需要时可以用cvtColor转换。

  3. 内存报错?记得及时释放资源,使用destroyAllWindows()关闭窗口。

小伙伴们,今天的Python学习之旅就到这里啦!OpenCV的功能远不止这些,我们今天学习的只是冰山一角。记得动手实践哦,有任何问题都可以在评论区问我。下期我们将探索更多有趣的OpenCV功能,敬请期待!祝大家学习愉快,Python学习节节高!‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌

楼市前景
浅析买房政策、楼市解读,分享买房技巧
 最新文章