opencv 裁剪填充
时间: 2023-11-08 19:05:51 浏览: 37
可以使用 OpenCV 中的 cv2.copyMakeBorder() 函数来进行填充,使用 cv2.crop() 函数来进行裁剪。
具体步骤如下:
1. 使用 cv2.copyMakeBorder() 函数来进行填充,该函数的参数包括原始图像、上下左右四个方向的填充大小、填充类型等。
2. 使用 cv2.crop() 函数来进行裁剪,该函数的参数包括填充后的图像、裁剪区域的左上角坐标和右下角坐标。
下面是一个示例代码:
```
import cv2
# 读取原始图像
img = cv2.imread('test.jpg')
# 上下左右各填充100个像素
img_padding = cv2.copyMakeBorder(img, 100, 100, 100, 100, cv2.BORDER_CONSTANT)
# 裁剪出中间的区域
img_cropped = img_padding[100:400, 100:400]
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Padded Image', img_padding)
cv2.imshow('Cropped Image', img_cropped)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
相关问题
opencv裁剪图片填充
可以使用cv2.copyMakeBorder()函数来实现图片的裁剪和填充。首先,可以使用cv2.imread()函数读取图片,然后使用cv2.copyMakeBorder()函数进行裁剪和填充。具体操作如下:
```python
import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 设置裁剪区域
x, y, w, h = 100, 100, 200, 200
# 裁剪图片
crop_img = img[y:y+h, x:x+w]
# 设置填充参数
top, bottom, left, right = 50, 50, 50, 50
value = [255, 255, 255] # 填充颜色为白色
# 填充图片
border_img = cv2.copyMakeBorder(crop_img, top, bottom, left, right, cv2.BORDER_CONSTANT,value=value)
# 显示结果
cv2.imshow('crop_img', crop_img)
cv2.imshow('border_img', border_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
opencv 多边形裁剪
在 OpenCV 中,可以使用函数 `cv2.fillPoly()` 对多边形进行填充,然后使用函数 `cv2.bitwise_and()` 将填充后的多边形与原始图像进行按位与操作,实现多边形裁剪。
以下是一个示例代码:
```python
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('input.jpg')
# 创建掩膜
mask = np.zeros(img.shape[:2], dtype=np.uint8)
# 定义多边形顶点
pts = np.array([[50, 50], [300, 50], [300, 200], [150, 250], [50, 200]], dtype=np.int32)
# 填充多边形
cv2.fillPoly(mask, [pts], 255)
# 进行按位与操作
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Mask', mask)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,首先读入原始图像,然后创建一个与原始图像大小相同的掩膜。接着定义多边形的顶点坐标,并使用 `cv2.fillPoly()` 函数填充多边形,将多边形区域设置为白色(像素值为 255),其他区域设置为黑色(像素值为 0)。最后使用 `cv2.bitwise_and()` 函数将原始图像与掩膜进行按位与操作,得到多边形裁剪后的图像,并显示结果。
注意,如果多边形区域不是闭合的,需要在顶点列表中添加起始点和终止点,使其闭合。同时,多边形的顶点坐标需要使用整数类型,否则 `cv2.fillPoly()` 函数无法正常工作。