cv2中没有resize没有copyMakeBorder怎么回事
时间: 2023-06-29 09:08:39 浏览: 41
如果你使用的是 OpenCV 2 版本,那么确实没有 `resize` 和 `copyMakeBorder` 函数。这些函数是在 OpenCV 3 版本中引入的。如果你需要使用这些函数,你需要升级到 OpenCV 3 或更高的版本。
另外,如果你想要在 OpenCV 2 中实现类似 `resize` 和 `copyMakeBorder` 的功能,你可以使用 `cv2.warpAffine` 和 `cv2.copyMakeBorder` 函数来替代。具体的实现方法可以参考 OpenCV 官方文档中的例子。
相关问题
cv2.resize 填充短边
cv2.resize函数可以用来调整图像的大小,其中可以通过指定插值方法来实现不同的调整效果。如果想要在调整图像大小时保持图像比例不变,可以将要调整的长边或短边指定为目标大小,然后按比例缩放另一边。如果想要在调整图像大小时填充短边,可以使用cv2.copyMakeBorder函数来实现。
具体实现方法如下:
```python
import cv2
img = cv2.imread('test.jpg')
h, w, _ = img.shape
size = 800
if h > w:
new_h = size
new_w = int(w * size / h)
else:
new_w = size
new_h = int(h * size / w)
resized_img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
if new_h > new_w:
top = bottom = 0
left = right = (new_h - new_w) // 2
else:
left = right = 0
top = bottom = (new_w - new_h) // 2
padded_img = cv2.copyMakeBorder(resized_img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])
```
上述代码中,首先读入原始图像,然后根据图像长宽比例和目标大小计算出新的长宽大小,使用cv2.resize函数进行缩放。接着根据新的长宽大小和目标大小的关系,计算出需要填充的边界大小,使用cv2.copyMakeBorder函数进行填充。
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`结尾,如果不是则跳过。对于每个图片文件,都进行尺寸缩放和边框填充的处理,并将处理后的图片写入输出文件夹中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)