Python用opencv输入像素坐标裁剪图片
时间: 2023-06-16 14:06:30 浏览: 221
你可以使用OpenCV中的cv2.crop()函数来裁剪图像。该函数需要指定图像、裁剪区域的左上角和右下角坐标。以下是一个示例代码:
```python
import cv2
# 读取图像
img = cv2.imread("example.jpg")
# 定义裁剪区域的左上角和右下角坐标
x1, y1 = 100, 100
x2, y2 = 300, 300
# 裁剪图像
crop_img = img[y1:y2, x1:x2]
# 显示裁剪后的图像
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
```
在此示例中,我们读取了名为example.jpg的图像,并定义了裁剪区域的左上角和右下角坐标。然后,我们使用这些坐标来裁剪图像,并使用cv2.imshow()函数显示裁剪后的图像。注意,裁剪的区域是[y1:y2, x1:x2],而不是[x1:x2, y1:y2],因为OpenCV中的坐标是(x, y)格式,而不是(y, x)格式。
相关问题
用python和opencv裁剪图片
### 使用Python和OpenCV进行图像裁剪
为了使用Python和OpenCV执行图像裁剪操作,首先需要导入必要的包并加载要处理的图像文件。具体来说,`cv2.imread()` 函数用于读取图像文件[^1]。
```python
import cv2
# 加载图像
img = cv2.imread('Resources/shapes.png')
```
接着,在获取到图像对象之后,可以根据所需的坐标范围对图像矩阵 `cv2.typing.MatLike` 进行切片操作以完成裁剪动作。例如:
```python
# 对图像进行裁剪
cropped_image = img[46:119, 352:495]
```
上述代码中的 `[46:119, 352:495]` 定义了裁剪区域的高度和宽度边界;其中第一个参数表示高度方向上的起始与结束像素位置(即y轴),第二个参数则对应于宽度方向上(即x轴)的位置。
最后,如果希望查看裁剪后的效果,则可利用 `cv2.imshow()` 方法展示结果,并通过 `cv2.imwrite()` 将其保存至本地磁盘中[^3]。
```python
# 显示原始图像
cv2.imshow("Original Image", img)
# 展示裁剪后的图像
cv2.imshow("Cropped Image", cropped_image)
# 保存裁剪后的图像
cv2.imwrite("output/cropped_shapes.png", cropped_image)
# 等待按键事件关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
Python通过四个点的像素,裁剪图片
要通过给定的四个点坐标裁剪图片,你可以使用Python的图像处理库,如OpenCV或PIL(Pillow)。下面是使用PIL库的示例代码:
```python
from PIL import Image
def crop_image(image_path, points):
# 打开图像
image = Image.open(image_path)
# 将图像转换为RGBA模式
image = image.convert("RGBA")
# 创建一个多边形裁剪区域
mask = Image.new('L', image.size, 0)
draw = ImageDraw.Draw(mask)
draw.polygon(points, fill=255)
# 将裁剪区域应用到图像上
image_cropped = Image.new('RGBA', image.size)
image_cropped.paste(image, mask=mask)
# 保存裁剪后的图像
image_cropped.save("output.png")
# 调用函数,传入图片路径和四个点的像素坐标
points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]
crop_image("input.png", points)
```
这段代码会打开指定的图片,将其转换为RGBA模式。然后,创建一个与图像大小相同的黑色遮罩图像,并在遮罩图像上绘制给定的四个点,形成一个多边形裁剪区域。接下来,将该裁剪区域应用到原始图像上,得到裁剪后的图像。最后,保存裁剪后的图像为"output.png"。你需要替换`points`变量中的坐标值为实际的像素坐标,以定义裁剪区域的形状。
阅读全文
相关推荐














