7 图像处理基础之图像的基本操作

在前一篇文章中,我们讨论了如何使用 OpenCV 读取和显示图像。在这一节中,我们将学习一些基本的图像操作,包括图像的裁剪、缩放、翻转和颜色空间转换。这些操作是图像处理的基础,能够帮助我们在更复杂的图像处理任务中打下良好的基础。让我们开始吧!

1. 图像裁剪

图像裁剪是指从一幅图像中提取出一个矩形区域。裁剪可以通过指定顶点的坐标来实现。以下是一个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
import cv2

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

# 定义裁剪区域,格式为 (y1:y2, x1:x2)
cropped_image = image[100:300, 150:350]

# 显示原图和裁剪后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个代码示例中,我们从 example.jpg 的原始图像中裁剪了一个矩形区域,起始坐标为 (150, 100),结束坐标为 (350, 300)。通过这段代码,你可以轻松地获取到你希望的图像区域。

2. 图像缩放

图像缩放是对图像进行放大或缩小的常见操作。OpenCV 提供了 cv2.resize() 函数来实现缩放。以下是一个示例:

1
2
3
4
5
6
7
8
# 对图像进行缩放
# 新尺寸是 (宽, 高)
resized_image = cv2.resize(image, (400, 300))

# 显示缩放后的图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们将图像缩放到 400x300 的新尺寸。你可以通过修改 (宽, 高) 参数来获得不同的结果。

3. 图像翻转

图像翻转是将图像进行上下或左右的镜像翻转,可以使用 cv2.flip() 函数完成。以下是翻转的示例:

1
2
3
4
5
6
7
8
9
10
11
# 水平翻转
flipped_image_h = cv2.flip(image, 1)

# 垂直翻转
flipped_image_v = cv2.flip(image, 0)

# 显示翻转结果
cv2.imshow('Flipped Horizontally', flipped_image_h)
cv2.imshow('Flipped Vertically', flipped_image_v)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们根据传递的标志值 1(水平翻转)和 0(垂直翻转)对图像进行了翻转处理。

4. 颜色空间转换

在图像处理中,颜色空间的转换是一个重要的操作。OpenCV 提供了多种颜色空间的转换函数,比如从 BGR(默认)转换到灰度、HSV 等。以下是一个灰度转换的示例:

1
2
3
4
5
6
7
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 显示灰度图像
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们使用 cv2.cvtColor() 函数将 BGR 图像转换为灰度图像。需要注意的是,转换后的图像只有一个通道(即灰度值)。

5. 案例:综合应用

我们可以将上述的基本操作结合在一起,进行一次综合性的图像处理。假设我们希望裁剪图像的中央部分,然后将其缩放,并翻转。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 读取图像
image = cv2.imread('example.jpg')

# 裁剪图像中央区域
h, w = image.shape[:2]
cropped_image = image[h//4:h*3//4, w//4:w*3//4]

# 缩放裁剪后的图像
resized_image = cv2.resize(cropped_image, (200, 200))

# 水平翻转
flipped_image = cv2.flip(resized_image, 1)

# 显示最终结果
cv2.imshow('Final Processed Image', flipped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个案例中,我们首先读取了原始图像,然后裁剪出中央的区域,接着将裁剪后的图像缩放至 200x200,最后进行了水平翻转。这个过程涵盖了我们在本节中讲述的基本操作。

结束语

通过本节的学习,你应该对基本的图像操作有了更深入的理解。这些操作为进一步的图像变换与滤波打下了基础。在下一节中,我们将探索各种图像变换和滤波算法,进一步提升图像处理的技能。请继续关注!

7 图像处理基础之图像的基本操作

https://zglg.work/opencv-tutorial/7/

作者

IT教程网(郭震)

发布于

2024-08-13

更新于

2024-08-13

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论