我有一个长方形图片,做最长边的正方形,并使这个长方形图片处于新正方形的中间,使用cv2
时间: 2024-12-27 18:32:41 浏览: 1
如果你想要通过OpenCV(cv2)对一张长方形图片进行裁剪,使其变成一个保持原始宽高比的正方形,然后居中放置在新正方形内,可以按照以下步骤操作:
1. 首先,读取图片并获取其尺寸(宽度和高度):
```python
import cv2
img = cv2.imread('your_image_path.jpg')
height, width = img.shape[:2]
```
2. 计算原始图片的最长边。如果宽度大于高度,则宽度作为新正方形的边长;反之则取高度:
```python
max_side = max(width, height)
```
3. 创建一个新的正方形图像,大小等于最长边,并设置为黑色背景:
```python
new_square = np.zeros((max_side, max_side, 3), dtype=np.uint8)
```
4. 然后计算裁剪区域的位置,让原图居中于新正方形:
```python
start_x = (max_side - width) // 2
start_y = (max_side - height) // 2
# 使用ROI (Region of Interest) 进行裁剪
cropped_img = new_square[start_y:start_y + height, start_x:start_x + width]
```
5. 最后,将裁剪后的部分复制回新的正方形:
```python
new_square[start_y:start_y + height, start_x:start_x + width] = img
```
6. 可能还需要调整新图片的亮度、对比度等,以便更好地适应目标环境。现在,`new_square`就是你需要的效果。
阅读全文