如何只能使用OpenCV或Numpy提供的功能,实现图片手动输入高宽比的缩放的实现方法是什么
时间: 2024-11-04 07:09:52 浏览: 9
在OpenCV(Open Source Computer Vision Library)或NumPy中,你可以通过以下几个步骤实现图片的手动输入并按高宽比缩放:
1. **导入库**:
使用`import cv2`引入OpenCV,`import numpy as np`引入NumPy。
2. **读取图片**:
使用`cv2.imread()`或`np.fromfile()`函数读取图片文件到一个numpy数组中,如`img = cv2.imread('image.jpg')`。
3. **获取原始尺寸**:
要得到原始图像的宽度和高度,可以使用`img.shape`属性,它会返回一个元组,第一个元素是行数(高度),第二个元素是列数(宽度),第三个元素是通道数。例如:`(height, width)`。
4. **计算缩放比例**:
设定你想要的目标高宽比,比如16:9。假设目标宽度为`new_width`,则高度可以通过公式计算:`target_height = target_width * original_height / original_width`。
5. **保持纵横比缩放**:
使用`cv2.resize()`函数,传入图像、目标尺寸以及是否保持纵横比(通常设置为True)。例如:
```python
resized_img = cv2.resize(img, (new_width, int(target_height)))
```
6. **显示或保存结果**:
最后,你可以用`cv2.imshow()`展示缩放后的图像,或者用`cv2.imwrite()`保存到新的文件。
```python
resized_img = cv2.resize(img, (int(new_width), int(target_height)), interpolation=cv2.INTER_LINEAR)
# 显示
cv2.imshow("Resized Image", resized_img)
cv2.waitKey(0) # 等待按键
cv2.destroyAllWindows()
# 或保存
cv2.imwrite('resized_image.jpg', resized_img)
```
阅读全文