首页 >后端开发 >Python教程 >如何使用 Python 在 OpenCV 中裁剪图像:Numpy 切片与 getRectSubPix?

如何使用 Python 在 OpenCV 中裁剪图像:Numpy 切片与 getRectSubPix?

Susan Sarandon
Susan Sarandon原创
2024-11-30 18:12:17653浏览

How to Crop Images in OpenCV Using Python: Numpy Slicing vs. getRectSubPix?

如何使用 Python 在 OpenCV 中裁剪图像

在图像处理中,裁剪是从图像中提取特定区域的基本操作。 OpenCV 是 Python 中流行的计算机视觉库,提供了多种裁剪方法,包括 numpy 切片和 getRectSubPix 等函数。

使用 numpy 切片进行裁剪

最简单和在 OpenCV 中裁剪图像最直接的方法是使用 numpy 切片。 Numpy 数组代表 OpenCV 中的图像,您可以使用切片操作访问数组的特定区域。

import cv2

# Read the original image
img = cv2.imread("image.jpg")

# Crop a region using numpy slicing
cropped_img = img[y:y+h, x:x+w]

# Display the cropped image
cv2.imshow('Cropped Image', cropped_img)
cv2.waitKey(0)

使用 getRectSubPix 进行裁剪

在某些场景中,例如当需要精确的子像素裁剪时,可以使用 OpenCV 的 getRectSubPix 函数。它在插入像素值的同时提取图像的矩形部分。

import cv2

# Read the original image
img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)

# Crop a region using getRectSubPix
cropped_img = cv2.getRectSubPix(img, (w, h), (x, y))

# Display the cropped image
cv2.imshow('Cropped Image', cropped_img)
cv2.waitKey(0)

示例代码(PIL 与 OpenCV)

用于说明 PIL 和 OpenCV 之间的区别OpenCV,让我们创建一个类似于 OpenCV 中提供的示例

PIL:

import PIL.Image as Image

im = Image.open('0.png').convert('L')
im = im.crop((1, 1, 98, 33))
im.save('_0.png')

OpenCV:

import cv2

# Read the image
img = cv2.imread('0.png', cv2.IMREAD_GRAYSCALE)

# Crop the image using numpy slicing
cropped_img = img[1:33, 1:98]

# Save the cropped image
cv2.imwrite('_0.png', cropped_img)

在此示例中,OpenCV 使用 numpy 切片裁剪坐标 (1, 1, 98, 33) 指定的图像。生成的裁剪图像保存为“_0.png”。

以上是如何使用 Python 在 OpenCV 中裁剪图像:Numpy 切片与 getRectSubPix?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn