简介

在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 通道,则该通道将被加载。
示例用法:

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 函数读取的图像,或者是通过其他方式生成的图像矩阵。

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 库中的一个函数,用于调整图像的大小。该函数的语法如下:

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:区域插值。
示例用法:

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()

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

03-02 08:27