当前位置: 首页 > news >正文

Python OpenCV图像处理与深度学习:Python OpenCV入门-图像处理基础

Python OpenCV入门实践:图像处理基础

学习目标

通过本课程,学员们将了解OpenCV的基本概念、安装方法,掌握如何使用Python和OpenCV进行基本的图像处理操作,包括图像的读取、显示、保存以及简单的图像变换。

相关知识点

  • Python OpenCV图像处理基础

学习内容

1 Python OpenCV图像处理基础

1.1 OpenCV简介及其安装
1.1.1 OpenCV简介

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV被广泛应用于各种计算机视觉应用,如图像和视频分析、人脸识别、物体识别、医学图像分析、增强现实等。它支持多种编程语言,包括Python、C++和Java,以及多种操作系统,如Windows、Linux、MacOS、Android和iOS。

OpenCV的开发始于1999年,由Intel公司发起,旨在加速计算机视觉应用的开发。2000年,OpenCV 1.0版本发布。随着时间的发展,OpenCV不断吸收新的算法和技术,成为计算机视觉领域不可或缺的工具之一。OpenCV 2.0版本引入了更多的高级功能,如机器学习模块。2012年,OpenCV 3.0版本发布,增加了更多的图像处理和视频分析功能。最新的OpenCV 4.0版本进一步优化了性能,增加了对深度学习的支持。

1.1.2 OpenCV的安装

安装OpenCV非常简单,特别是使用Python时。可以通过Python的包管理工具pip来安装OpenCV。打开命令行工具,输入以下命令:

%pip install opencv-python

如果需要使用OpenCV的额外模块,如SIFT、SURF等,可以安装opencv-contrib-python包:

%pip install opencv-contrib-python

安装完成后,可以在Python脚本中通过import cv2来导入OpenCV库。

1.2 图像的基本操作
1.2.1 读取图像

执行以下指令获取测试图片。

!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/188467642fa811f0b2fdfa163edcddae/example.jpg

在OpenCV中,读取图像非常简单。使用cv2.imread()函数可以读取图像文件。该函数接受一个文件路径作为参数,并返回一个NumPy数组,该数组表示图像的像素值。

import cv2# 读取图像
image = cv2.imread('example.jpg')# 检查图像是否成功读取
if image is None:print("Error: Could not read image.")
else:print("Image successfully read.")
1.2.2 显示图像

读取图像后,可以使用cv2.imshow()函数来显示图像。该函数接受两个参数:窗口名称和图像数组。

import cv2# 读取图像
image = cv2.imread('example.jpg')# 显示图像
cv2.imshow('Image', image)# 等待用户按键
cv2.waitKey(0)# 关闭所有窗口
cv2.destroyAllWindows()
1.2.3 保存图像

处理完图像后,可以使用cv2.imwrite()函数将图像保存到文件。该函数接受两个参数:文件路径和图像数组。

import cv2# 读取图像
image = cv2.imread('example.jpg')# 保存图像
cv2.imwrite('save.jpg', image)
1.3 图像变换
1.3.1 图像灰度化

图像灰度化是将彩色图像转换为灰度图像的过程。在OpenCV中,可以使用cv2.cvtColor()函数来实现图像的灰度化。该函数接受两个参数:输入图像和颜色转换代码。

import cv2
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('example.jpg')# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
gray_image = cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB)
# 显示灰度图像
plt.imshow(gray_image)
plt.axis('off')
plt.show()
1.3.2 图像缩放

图像缩放是改变图像大小的过程。在OpenCV中,可以使用cv2.resize()函数来实现图像的缩放。该函数接受多个参数,包括输入图像、输出图像的大小、插值方法等。

import cv2# 读取图像
image = cv2.imread('example.jpg')# 缩放图像
resized_image = cv2.resize(image, (800, 600))
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
resized_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)
# 显示缩放后的图像
plt.imshow(resized_image)
plt.show()
1.3.3 图像旋转

图像旋转是将图像绕某个点旋转一定角度的过程。在OpenCV中,可以使用cv2.getRotationMatrix2D()cv2.warpAffine()函数来实现图像的旋转。

import cv2
import numpy as np# 读取图像
image = cv2.imread('example.jpg')# 获取图像的中心点
height, width = image.shape[:2]
center = (width // 2, height // 2)# 定义旋转角度和缩放比例
angle = 45
scale = 1.0# 获取旋转矩阵
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)# 应用旋转
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
# 将 BGR 格式转换为 RGB 格式,以适配 matplotlib 的显示
rotated_image = cv2.cvtColor(rotated_image, cv2.COLOR_BGR2RGB)
# 显示旋转后的图像
plt.imshow(rotated_image)
plt.axis('off')
plt.show()

通过本课程的学习,学员们将掌握OpenCV的基本使用方法,能够进行图像的读取、显示、保存以及简单的图像变换。这些基础知识将为后续更复杂的图像处理和计算机视觉任务打下坚实的基础。

http://www.dtcms.com/a/356504.html

相关文章:

  • 什么是 MySQL的主从同步机制?它是如何实现的?
  • 交互设计 | 无人机控制系统的 UI 设计:从人机交互到任务管理
  • Word - Word 查找文本中的特定内容
  • 宜春城区光纤铺设及接口实地调研
  • 宜春城区SDH网图分析
  • 设计模式Books Reading
  • 计算机视觉----opencv(图像轮毂绘制(大小选择,排序,外接图形绘制),轮廓的近似,模板的匹配)
  • mybatis.xml直接读取配置文件(application.yml)中的数据
  • java数据结构--排序
  • 工业相机的类型及不同类型的应用
  • Python 实战:内网渗透中的信息收集自动化脚本(5)
  • 2025.8.29总结
  • MFC视图中绘制图形缩放和滚动条的处理
  • C/C++---预定义常量
  • Fast-LIVO2算法与其他激光雷达-惯性-视觉里程计算法相比有何优势?
  • 【LeetCode 热题 100】62. 不同路径——(解法二)递推
  • Spring Security 传统 web 开发场景下开启 CSRF 防御原理与源码解析
  • “我店 + RWA”来袭:重构商业价值,解锁消费投资新密码
  • 大模型入门学习微调实战:基于PyTorch和Hugging Face电影评价情感分析模型微调全流程(附完整代码)手把手教你做
  • C++基础(④链表反转(链表 + 迭代 / 递归))
  • Linux - 中文显示乱码问题解决方法(编码查看及转换)- 学习/实践
  • 对于牛客网—语言学习篇—编程初学者入门训练—函数类型:BC156 牛牛的数组匹配及BC158 回文数解析
  • Total PDF Converter多功能 PDF 批量转换工具,无水印 + 高效处理指南
  • docker 搭建zookper集群,快照虚拟机多机模拟
  • 2025数学建模国赛AI提示词模板
  • 如何解决网关断网后时间不再统计的问题?无RTC子设备如何打通主网关的时间同步功能?
  • 法律审查prompt收集
  • 高并发内存池(19)-用基数树优化
  • IDA-pro-mcp 的核心功能 常用的prompt
  • Mybatis的常用标签