cv2中没有resize没有copyMakeBorder怎么回事
时间: 2023-06-29 10:08:39 浏览: 78
如果你使用的是 OpenCV 2 版本,那么确实没有 `resize` 和 `copyMakeBorder` 函数。这些函数是在 OpenCV 3 版本中引入的。如果你需要使用这些函数,你需要升级到 OpenCV 3 或更高的版本。
另外,如果你想要在 OpenCV 2 中实现类似 `resize` 和 `copyMakeBorder` 的功能,你可以使用 `cv2.warpAffine` 和 `cv2.copyMakeBorder` 函数来替代。具体的实现方法可以参考 OpenCV 官方文档中的例子。
相关问题
import cv2 img =cv2.imread('1.jpg') img = cv2.resize(img , (640,480)) img = cv2.copyMakeBorder(img,240,240,320,320,cv2.BORDER_CONSTANT,value=(255,255,255)) print(img.shape) cv2.imwrite('2.jpg',img) 添入os文件路径代码,并批量处理文件
可以使用Python的os模块来进行文件路径操作和批量处理文件,具体代码如下:
```python
import os
import cv2
# 定义输入文件夹和输出文件夹路径
input_dir = 'input_path'
output_dir = 'output_path'
# 遍历输入文件夹下的所有文件
for file_name in os.listdir(input_dir):
# 如果不是图片文件,则跳过
if not file_name.endswith('.jpg'):
continue
# 读取图片文件
img_path = os.path.join(input_dir, file_name)
img = cv2.imread(img_path)
# 对图片进行处理
img = cv2.resize(img, (640, 480))
img = cv2.copyMakeBorder(img, 240, 240, 320, 320, cv2.BORDER_CONSTANT, value=(255, 255, 255))
# 写入输出文件夹
output_path = os.path.join(output_dir, file_name)
cv2.imwrite(output_path, img)
```
其中,`input_dir`和`output_dir`变量分别表示输入文件夹和输出文件夹的路径,需要根据实际情况进行修改。`os.listdir()`函数可以遍历指定目录下的所有文件和文件夹,`os.path.join()`函数可以将文件夹路径和文件名拼接成完整的文件路径,`file_name.endswith('.jpg')`是判断文件名是否以`.jpg`结尾,如果不是则跳过。对于每个图片文件,都进行尺寸缩放和边框填充的处理,并将处理后的图片写入输出文件夹中。
下面这段代码的作用是什么:def resize_img(img, img_size=600, value=[255, 255, 255], inter=cv2.INTER_AREA): old_shape = img.shape[:2] ratio = img_size / max(old_shape) new_shape = [int(s * ratio) for s in old_shape[:2]] img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=inter) delta_h, delta_w = img_size - new_shape[0], img_size - new_shape[1] top, bottom = delta_h // 2, delta_h - delta_h // 2 left, right = delta_w // 2, delta_w - delta_w // 2 img = cv2.copyMakeBorder(img, int(top), int(bottom), int(left), int(right), borderType=cv2.BORDER_CONSTANT, value=value) return img
该函数为调整图像大小并添加边框的函数,主要使用OpenCV中的resize()函数将图像调整为指定大小,再使用copyMakeBorder()函数为图像添加边框以符合指定大小。其中,img表示输入的图像,img_size表示调整后的大小,value为边框颜色(默认为白色),inter表示插值算法(默认为INTER_AREA)。函数返回调整后的图像。
阅读全文