需求说明
有时候,我们需要对一张图片进行坐标轴绘制,直观观察图片的长宽分布,并根据坐标轴中心点的选取来实现不同位置的坐标轴。
常见需求:
- 中心点自定义
- 坐标间隔自定义
- 坐标轴颜色自定义
- 透明度自定义
- 间隔值大小自定义以及颜色自定义
- 图片自定义
因此,本博客就以上需求进行代码实现,具体效果如下:
原图:
绘制坐标轴后的图:
实现代码
主要操作讲解都在代码中注释了,可以边看边食用!
依赖的库
from matplotlib import pyplot as plt
import os
# 设置图片保存的分辨率
plt.rcParams['savefig.dpi'] = 200
主要函数
def patch_arrow(img_path, center, limits=None, interval=6, color='r', width=2, fontsize=7, fontcolor='black', alpha=0.5):
'''
img_path: 图片路径
center: 中心坐标
limits: 坐标轴间隔大小——默认为None, 表示自动求取间隔
interval: 间隔标记的长度
color: 坐标轴颜色
width: 线条宽度
fontsize: 坐标间隔的字体大小
fontcolor: 间隔字体颜色
alpha: 透明度--值越大,透明度越小
'''
# 判断输入条件是否满足基本要求
assert os.path.isfile(img_path), \
'please enter a truthful img_path, now it dosen`t exist.'
assert len(center)==2, \
'please enter center like (x, y).'
assert alpha <= 1.0 and alpha >= 0., \
'please enter alpha like (from 0. to 1.).'
img = plt.imread(img_path) # 读取图像
h,w,_ = img.shape # 获取高宽
# 自动确定间隔
auto_limit_numbers = 12 # 自动间隔点
if limits is None:
limits = max((h, w))
limits = limits // auto_limit_numbers
fig = plt.figure(figsize=(w/100,h/100))
x, y = center[