Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV

OpenCV 是一个C++ 库,用于(实时)处理计算视觉问题。实时处理计算机视觉的 C++ 库,最初由英特尔公司开发,现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库,这意味着它对于学术研究和商业应用是免费的。

10.1 OpenCV的Python接口

OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了大量的图像和视频处理功能。其 Python 接口使得用户能够方便地在 Python 中使用 OpenCV 的功能。OpenCV Python 接口通过 cv2 模块提供了对各种计算机视觉算法和工具的访问,包括图像处理、视频分析、机器学习等。

使用

#直接pip没法安装下来
pip install cv2

#需要按照如下命令安装才会成功
pip install opencv-python

如果安装速度太慢可以使用清华源:

pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

10.2 OpenCV基础知识

主要功能:
  1. 图像读取和显示

    • 读取图像:cv2.imread()
    • 显示图像:cv2.imshow()
    • 保存图像:cv2.imwrite()
  2. 图像处理

    • 图像转换:cv2.cvtColor()
    • 图像平滑:cv2.GaussianBlur(), cv2.medianBlur()
    • 边缘检测:cv2.Canny()
  3. 几何变换

    • 图像缩放:cv2.resize()
    • 旋转和仿射变换:cv2.warpAffine()
    • 透视变换:cv2.warpPerspective()
  4. 特征检测与描述

    • 角点检测:cv2.cornerHarris()
    • 特征匹配:cv2.BFMatcher(), cv2.FlannBasedMatcher()
  5. 视频处理

    • 捕捉视频:cv2.VideoCapture()
    • 播放视频:cv2.imshow()(与图像处理相同)
  6. 机器学习与深度学习

    • 加载预训练模型:cv2.dnn.readNet()
    • 进行推理:cv2.dnn.forward()

示例代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('test.jpg')

# 显示原图
cv2.imshow('Original Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 图像平滑
smoothed_image = cv2.GaussianBlur(gray_image, (5, 5), 0)

# 边缘检测
edges = cv2.Canny(smoothed_image, 100, 200)

# 显示处理结果
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
axs[0].imshow(cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB), cmap='gray')
axs[0].set_title('Gray Image')
axs[0].axis('off')

axs[1].imshow(cv2.cvtColor(smoothed_image, cv2.COLOR_BGR2RGB), cmap='gray')
axs[1].set_title('Smoothed Image')
axs[1].axis('off')

axs[2].imshow(cv2.cvtColor(edges, cv2.COLOR_BGR2RGB), cmap='gray')
axs[2].set_title('Edges')
axs[2].axis('off')

plt.show()

处理结果如下:
在这里插入图片描述

实验图1 示例代码处理结果

其中:

  1. 读取图像cv2.imread('test.jpg)

  2. 转换为灰度图cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

  3. 图像平滑cv2.GaussianBlur(gray_image, (5, 5), 0)

  4. 边缘检测cv2.Canny(smoothed_image, 100, 200)

  5. 显示结果:使用 matplotlib 展示灰度图、平滑图像和边缘检测结果

10.3 处理视频

OpenCV 提供了全面的视频处理功能,主要包括以下几个方面:

  1. 读取视频

    • 打开视频文件或摄像头进行视频流读取。
    • 使用 cv2.VideoCapture() 进行视频捕捉。
  2. 显示视频

    • 显示视频帧或视频流。
    • 使用 cv2.imshow() 显示每一帧图像。
  3. 处理视频

    • 对视频帧进行各种图像处理操作,如颜色转换、滤镜应用、对象检测等。
  4. 写入视频

    • 将处理后的视频保存到文件中。
    • 使用 cv2.VideoWriter() 进行视频编写和保存。
  5. 视频属性获取

    • 获取视频的帧率、分辨率、总帧数等信息。
    • 通过 cv2.CAP_PROP_FPScv2.CAP_PROP_FRAME_WIDTHcv2.CAP_PROP_FRAME_HEIGHT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值