python 输入图片,已知图片中心点坐标和长宽,画出红框,并在上面添加文字标签,返回出添加后的图片
时间: 2024-10-14 16:17:01 浏览: 34
在Python中,你可以使用PIL(Pillow)库来处理图像,加上matplotlib或OpenCV等工具来实现这个需求。首先,你需要安装这些库,如果还没有安装,可以使用pip安装:
```bash
pip install Pillow matplotlib opencv-python-headless
```
然后,下面是一个简单的步骤说明如何做到这一点:
1. **导入必要的库**:
```python
from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np
```
2. **读取图片**:
```python
image = Image.open('input_image.jpg')
```
3. **获取图片尺寸和中心点**:
```python
width, height = image.size
center_x, center_y = (width // 2, height // 2) # 假设你是根据图片对角线计算中心
```
4. **创建一个Draw对象并绘制矩形**:
```python
draw = ImageDraw.Draw(image)
frame_width = 5 # 红框宽度,可以根据需要调整
x1, y1 = center_x - frame_width, center_y - frame_width
x2, y2 = center_x + frame_width, center_y + frame_width
draw.rectangle([(x1, y1), (x2, y2)], outline='red', width=frame_width)
```
5. **添加文字标签**:
```python
font_path = 'arial.ttf' # 字体路径,需要提前下载
font_size = 20
text = "Image Center"
text_position = (x1 + 10, y1 + 10) # 文字位置
font = ImageFont.truetype(font_path, font_size)
draw.text(text_position, text, fill='white', font=font)
```
6. **保存图片**:
```python
output_image = 'output_with_label.jpg'
image.save(output_image)
```
7. **如果要用OpenCV显示图片,转换为numpy数组**:
```python
# 使用OpenCV显示图片
cv_image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
cv2.imshow('Image with Label', cv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
完成上述步骤后,你会得到一个图片,其中包含一个红色边框和位于中心的文字标签。
阅读全文