介绍
欢迎来到 OpenCV-Python 教程!本教程将介绍使用 Python 中的 OpenCV 库对图像进行一些基本操作。
欢迎来到 OpenCV-Python 教程!本教程将介绍使用 Python 中的 OpenCV 库对图像进行一些基本操作。
在开始本实验之前,挑战者需要在终端中打开位于 /home/labex/project
的 Python Shell。
cd /home/labex/project
python3
首先,让我们加载一张图像并使用 OpenCV 显示它:
import cv2
## 加载图像
image = cv2.imread('image.jpg')
## 显示图像
cv2.imwrite('Original Image.jpg', image)
要访问一个像素值,我们只需要提供其坐标 (x
, y
),如下所示:
pixel_value = image[y, x]
像素值是一个包含颜色通道 (B
, G
, R
) 的数组。要修改像素值,只需为相应的坐标分配一个新值。
以下是将像素 [0:9, 0:9] 设置为红色的示例:
for x in range(10):
for y in range(10):
image[x, y] = [0, 0, 255] ## 将像素设置为红色
cv2.imwrite('Modified Image.jpg', image)
原始图像如下所示:
修改 [0:9,0:9] 范围内的像素值后的图像:
用户可以通过运行以下代码来检查结果的正确性。
图像属性包括行数、列数和通道数,以及图像数据类型和像素总数。
要访问图像的形状(行数
、列数
和 通道数
),可以使用 shape
属性:
height, width, channels = image.shape
print(height, width, channels)
## output
## 360 640 3
要访问像素总数,可以使用 size
属性:
total_pixels = image.size
print(total_pixels)
## output
## 691200
要访问图像数据类型,可以使用 dtype
属性:
image_dtype = image.dtype
print(image_dtype)
## output
## uint8
感兴趣区域(Region of Interest, ROI)是从原始图像中提取的子图像。要设置 ROI,我们只需要提供起始和结束坐标。
roi = image[start_y:end_y, start_x:end_x]
例如,要从左上角提取一个 100x100 像素的 ROI,可以执行以下操作:
roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)
生成的图像 ROI.jpg
如下所示:
要将图像拆分为其颜色通道(B
、G
、R
),可以使用 cv2.split()
函数:
b, g, r = cv2.split(image)
现在,我们可以使用 cv2.imwrite()
显示各个通道。要将通道合并回单个图像,可以使用 cv2.merge()
函数:
merged_image = cv2.merge((b, g, r))
例如,要交换红色和蓝色通道,可以执行以下操作:
swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)
生成的图像 Swapped Channels Image.jpg
如下所示:
就是这样!你已经学习了使用 OpenCV-Python 进行图像处理的一些基本操作。这些是在计算机视觉和图像处理应用中处理图像时需要理解的重要概念。通过掌握这些基本操作,你将为进一步开发更高级的图像处理算法打下坚实的基础。