mmrotate visualization
时间: 2025-04-16 17:47:25 浏览: 39
### 关于 MMROTATE 的可视化方法
MMRotate 是一个用于旋转框目标检测的开源库,提供了多种工具来进行模型训练、推理以及结果可视化。对于可视化的实现主要依赖 `mmdet` 提供的基础功能,并在此基础上进行了扩展以支持旋转矩形。
#### 使用预训练模型进行图像预测并保存结果
可以通过命令行调用官方提供的脚本完成单张图片的目标检测与可视化操作[^2]:
```bash
# 下载指定配置文件对应的权重
mim download mmrotate --config oriented-rcnn-le90_r50_fpn_1x_dota --dest .
# 执行检测并将结果显示在新创建的结果图上
python demo/image_demo.py demo/demo.jpg oriented-rcnn-le90_r50_fpn_1x_dota.py oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth --out-file result.jpg
```
上述过程会读取给定路径下的输入图片,在终端打印出识别到的对象信息的同时还会生成一张带有标注框的新图片存放在当前工作目录下名为 `result.jpg` 文件中。
#### 自定义绘图函数展示更多细节
如果希望进一步自定义视觉效果,则可以在 Python 中编写额外代码片段来处理输出数据结构中的边界框坐标等属性值。下面给出一段简单的例子说明如何利用 Matplotlib 库绘制带角度的方向边框:
```python
import cv2
from matplotlib import pyplot as plt
import numpy as np
def draw_oriented_bbox(img, bboxes, labels=None):
"""
绘制具有方向性的边界框
参数:
img (str or ndarray): 输入图像路径或数组形式的数据.
bboxes (list of list[float]): 形状为[N, 5]的一维列表,
每个元素表示[x_center,y_center,w,h,angle].
labels (optional[list[str]]): 对应类别标签,默认为空即不显示文字描述.
返回:
fig: 包含所画图形对象的Figure实例.
"""
if isinstance(img, str):
img = cv2.imread(img)
h, w = img.shape[:2]
fig, ax = plt.subplots(figsize=(w / 100., h / 100.), dpi=100)
for i, bbox in enumerate(bboxes):
center_x, center_y, width, height, angle = map(float, bbox)
rect = ((center_x, center_y), (width, height), -np.degrees(angle))
box = cv2.boxPoints(rect).astype(np.int32)
color = tuple(map(int, np.random.randint(0, 255, size=[3])))
# Draw rotated rectangle with random colors
cv2.polylines(img,[box],True,color=color,thickness=2,lineType=cv2.LINE_AA)
if labels is not None and len(labels)>i:
label_text = f'{labels[i]}'
text_size = cv2.getTextSize(label_text,cv2.FONT_HERSHEY_SIMPLEX,.7,(0,))[0]
point = max(center_x-text_size[0]/2,0),max(center_y-text_size[1]-8,0)
cv2.putText(img,label_text,tuple(point.astype('int')),cv2.FONT_HERSHEY_SIMPLEX,
fontScale=.7,color=color,thickness=2)
ax.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.axis('off')
return fig
```
此段程序接受任意数量的位置参数作为待渲染区域的信息源,并能够依据传入的具体数值调整最终呈现出来的样式特征。此外还可以接收可选的关键字参数用来附加分类名称至各个实体旁边以便更直观地区分不同种类的事物。
阅读全文
相关推荐


















