7 图像处理基础之图像的基本操作
系列进度
OpenCV 教程 · 第 7 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
OpenCV 学习要把图像输入、处理步骤、检测结果和工程性能放在一起验证。阅读时可以按「图像裁剪 -> 图像缩放 -> 图像翻转 -> 颜色空间转换」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「图像裁剪」,再查「图像缩放」。
在前一篇文章中,我们讨论了如何使用 OpenCV 读取和显示图像。在这一节中,我们将学习一些基本的图像操作,包括图像的裁剪、缩放、翻转和颜色空间转换。这些操作是图像处理的基础,能够帮助我们在更复杂的图像处理任务中打下良好的基础。让我们开始吧!
1. 图像裁剪
图像裁剪是指从一幅图像中提取出一个矩形区域。裁剪可以通过指定顶点的坐标来实现。以下是一个简单的示例:
学习 OpenCV 图像基本操作时,先看每一步是否改变尺寸、通道、数据类型和坐标范围。
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() 函数来实现缩放。以下是一个示例:
学《图像处理基础之图像的基本操作》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。
# 对图像进行缩放
# 新尺寸是 (宽, 高)
resized_image = cv2.resize(image, (400, 300))
# 显示缩放后的图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个示例中,我们将图像缩放到 400x300 的新尺寸。你可以通过修改 (宽, 高) 参数来获得不同的结果。
3. 图像翻转
图像翻转是将图像进行上下或左右的镜像翻转,可以使用 cv2.flip() 函数完成。以下是翻转的示例:
# 水平翻转
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 等。以下是一个灰度转换的示例:
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个示例中,我们使用 cv2.cvtColor() 函数将 BGR 图像转换为灰度图像。需要注意的是,转换后的图像只有一个通道(即灰度值)。
5. 案例:综合应用
我们可以将上述的基本操作结合在一起,进行一次综合性的图像处理。假设我们希望裁剪图像的中央部分,然后将其缩放,并翻转。
# 读取图像
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,最后进行了水平翻转。这个过程涵盖了我们在本节中讲述的基本操作。
结束语
通过本节的学习,你应该对基本的图像操作有了更深入的理解。这些操作为进一步的图像变换与滤波打下了基础。在下一节中,我们将探索各种图像变换和滤波算法,进一步提升图像处理的技能。请继续关注!
回看《图像处理基础之图像的基本操作》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
如果《图像处理基础之图像的基本操作》还没完全消化,可以从这张卡片的四个动作重新走一遍。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
图像处理基础之图像的基本操作适合谁读?
这是 OpenCV 教程 系列第 7 / 24 篇,适合正在学习OpenCV 教程,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇OpenCV教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读