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

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.xdnf.cn/news/19045.html

相关文章:

  • Linux之Docker虚拟化技术(二)
  • Mysql系列--11、使用c/c++访问mysql服务
  • 软件安装教程(二):Pycharm安装与配置(Windows)
  • DeepSeek大模型风靡云平台,百度智能云、阿里云、腾讯云等多个平台宣布上线DeepSeek模型
  • java_web 日志配置
  • 瑞芯微RK3576开发板Android14三屏异显开发教程
  • 【项目思维】通过编写一个贪吃蛇小程序,并移植到嵌入式设备上,解析编程思维的本质
  • SAP-ABAP:SAP 数值显示格式控制:负号前置方法与最佳实践总结
  • 一般纳税人
  • JavaScript 数组核心操作实战:最值获取与排序实现(从基础到优化)
  • CSS text-decoration-thickness:精细控制文本装饰线粗细的新属性
  • 光学设计中干涉现象难预测?OAS 软件多结构干涉来解决
  • Word文档怎么打印?Word打印技巧?【图文详解】单面/双面/指定页面/逆序等Word打印选项
  • Linux学习——sqlite3
  • 【系列01】端侧AI:构建与部署高效的本地化AI模型
  • 【Linux】Make/Makefile (自动化构建):从“是什么”到“会用它”
  • 软考-系统架构设计师 专家系统(ES)详细讲解
  • Azure、RDP、NTLM 均现高危漏洞,微软发布2025年8月安全更新
  • PlotJuggler如何安装和使用
  • AI 自动化编程 trae 体验3 开发小程序
  • (Nginx)基于Nginx+PHP 驱动 Web 应用(上):配置文件与虚拟主机篇
  • 网络编程(2)—多客户端交互
  • Uniapp + UView + FastAdmin 性格测试小程序方案
  • Qt类-扩充_xiaozuo
  • 龙巍:探究青铜器在木雕中的运用
  • 学习:uniapp全栈微信小程序vue3后台(6)
  • 【国内电子数据取证厂商龙信科技】ES 数据库重建
  • 【Flask】测试平台开发,产品管理实现添加功能-第五篇
  • DevOps
  • 沃尔玛AI系统Wally深度拆解:零售业库存周转提速18%,动态定价争议与员工转型成热议点