CV库简介和函数说明

目录

简介

在Python中,CV(Computer Vision,计算机视觉)库是一组用于处理图像和视频的工具和函数的集合。这些库允许开发者进行图像处理、特征提取、对象检测、图像识别等任务。其中最常用的CV库之一是OpenCV(Open Source Computer Vision Library),它是一个开源的跨平台计算机视觉库,提供了丰富的图像处理和计算机视觉算法,可以在Python、C++、Java等语言中使用。

OpenCV提供了各种功能,包括但不限于:

  • 图像加载和保存
  • 图像处理和增强(如滤波、边缘检测、色彩转换等)
  • 物体检测和跟踪
  • 特征提取和描述符匹配
  • 人脸识别和人脸检测
  • 相机标定和图像校正
  • 图像分割和对象分析

常用函数说明

存读取

cv2.imread()

filename:要读取的图像文件的路径。

flags:可选参数,用于指定图像读取的模式。常用的标志包括:

cv2.IMREAD_COLOR:加载彩色图像。图像的透明度将被忽略,即使图像文件包含 alpha 通道,也会被忽略。这是默认模式。

cv2.IMREAD_GRAYSCALE:以灰度模式加载图像。

cv2.IMREAD_UNCHANGED:加载图像的 alpha 通道。如果图像文件包含 alpha 通道,则该通道将被加载。

示例用法:

python 复制代码
import cv2

# 读取彩色图像
color_image = cv2.imread('image.jpg', cv2.IMREAD_COLOR)

# 读取灰度图像
gray_image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 读取包含 alpha 通道的图像
alpha_image = cv2.imread('image.png', cv2.IMREAD_UNCHANGED)

cv2.imshow()

winname:窗口的名称,用于标识显示图像的窗口。如果指定的窗口不存在,则会创建一个新窗口并显示图像。如果存在具有相同名称的窗口,则会在该窗口中显示新图像。

mat:要显示的图像矩阵(即图像数据)。这通常是使用 cv2.imread 函数读取的图像,或者是通过其他方式生成的图像矩阵。

python 复制代码
import cv2

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

# 显示图像
cv2.imshow('Image', image)

# 等待用户按下任意键盘键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

注意事项:

使用 cv2.imshow 函数显示图像时,图像会在一个新的窗口中显示出来。您可以通过指定窗口名称来管理窗口,以便在同一个窗口中显示不同的图像,或者关闭窗口等。

在显示图像之后,通常会调用 cv2.waitKey 函数等待用户按下键盘键。在等待期间,窗口将保持打开状态。一旦用户按下键盘键,窗口将关闭。

在调用 cv2.destroyAllWindows 之前,可以使用 cv2.destroyWindow(winname) 关闭特定的窗口。

图像调整

cv2.resize()

cv2.resize 是 OpenCV 库中的一个函数,用于调整图像的大小。该函数的语法如下:

python 复制代码
dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

src:原始图像,即待调整大小的图像。

dsize:输出图像的大小,可以是输出图像的宽度和高度的元组 (width, height),也可以是整数 width 和 height。

dst:输出图像,可选参数。如果指定了此参数,函数将结果写入到此变量中。

fx:水平方向上的缩放比例,可选参数。如果未指定 dsize,则根据 fx 和 fy 来调整输出图像的大小。

fy:垂直方向上的缩放比例,可选参数。如果未指定 dsize,则根据 fx 和 fy 来调整输出图像的大小。

interpolation:插值方法,可选参数。用于调整图像大小时对像素值的处理方式。常用的插值方法包括:

cv2.INTER_NEAREST:最近邻插值。

cv2.INTER_LINEAR:双线性插值(默认)。

cv2.INTER_CUBIC:双三次插值。

cv2.INTER_AREA:区域插值。

示例用法:

python 复制代码
import cv2

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

# 调整大小为新的宽度和高度
new_width = 300
new_height = 200
resized_image = cv2.resize(image, (new_width, new_height))

# 或者,按照缩放比例调整大小
scale_factor = 0.5
resized_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)

# 显示调整大小后的图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

这个函数在图像处理中非常常用,例如在预处理阶段调整输入图像的大小以适应模型的输入要求,或者在图像显示中调整图像大小以适应屏幕大小等。

相关推荐
可惜已不在39 分钟前
AI 搜索引擎工具集合
人工智能·ai
Landy_Jay42 分钟前
深度学习:基于MindSpore实现CycleGAN壁画修复
人工智能·深度学习
Funny_AI_LAB1 小时前
MetaAI最新开源Llama3.2亮点及使用指南
算法·计算机视觉·语言模型·llama·facebook
Langchain1 小时前
不可错过!CMU最新《生成式人工智能大模型》课程:从文本、图像到多模态大模型
人工智能·自然语言处理·langchain·大模型·llm·大语言模型·多模态大模型
龙的爹23332 小时前
论文翻译 | Generated Knowledge Prompting for Commonsense Reasoning
人工智能·gpt·机器学习·语言模型·自然语言处理·nlp·prompt
龙的爹23332 小时前
论文翻译 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·语言模型·自然语言处理·nlp·prompt
方世恩2 小时前
【进阶OpenCV】 (5)--指纹验证
人工智能·opencv·目标检测·计算机视觉
_.Switch2 小时前
Python机器学习:自然语言处理、计算机视觉与强化学习
python·机器学习·计算机视觉·自然语言处理·架构·tensorflow·scikit-learn
FL16238631292 小时前
[C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
c++·opencv·yolo
A_lvvx2 小时前
OpenCV透视变换
人工智能·opencv·计算机视觉