直接在缓存中互读
import io
import numpy as np
import PIL
import matplotlib.pyplot as plt
#... fig = ...
#假设你有了一个绘图结果fig
#申请缓存
buffer_ = io.BytesIO()
fig.savefig(buffer_, format = "png")
buffer_.seek(0)
image = PIL.Image.open(buffer_)
#转换为numpy array
ar = np.asarray(image)
cv2.imshow("demo", ar)
#释放缓存
buffer_.close()
来源:https://blog.csdn.net/ngy321/article/details/80109088
OpenCV添加文字
cv2.putText(img, text, (40, 50), cv2.FONT_HERSHEY_PLAIN, 2.0, (0, 0, 255), 2)
格式互转
opencv默认BGR顺序,matplotlib和PIL默认RGB顺序。
# Image转cv2
cv2_img = cv2.cvtColor(numpy.asarray(Img_img),cv2.COLOR_RGB2BGR)
# cv2转Image
pil_img = Image.fromarray(cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB))
隐藏坐标轴文本刻度或刻度标签
# 隐藏包括轴标签的坐标轴
xaxis.set_visible(False)/yaxis.set_visible(False)
# 在 Matplotlib 中隐藏坐标轴
xaxis.set_ticks([])/yaxis.set_ticks([])
# 在 Matplotlib 中隐藏轴标签/文本
xaxis.set_ticklabels([])/yaxis.set_ticklabels([])
# 来隐藏 Matplotlib 中的坐标轴标签/文本
xticks(color='w')/yticks(color='w')
关闭1个fig
plt.close(fig)
保存时去除白边
# pad_inches=0:去除所有白边
# bbox_inches='tight':去除坐标轴占用的空间
plt.savefig(path, format='png', pad_inches=0, bbox_inches='tight')
调整图片间隙
fig.tight_layout() # 调整整体空白
plt.subplots_adjust(wspace=0, hspace=0) # 调整子图间距
plt.subplot_tool() # 提供了一种交互式方法来拖动 subplot_tool 中的条以更改子图的布局
取消边框
axes[i][j].spines['top'].set_visible(False)
axes[i][j].spines['right'].set_visible(False)
axes[i][j].spines['bottom'].set_visible(False)
axes[i][j].spines['left'].set_visible(False)
````
## 生成空白图
使用Numpy创建一张A4(2105×1487)纸
格式:h,w,c
img = np.zeros((2105,1487,3), np.uint8)
使用白色填充图片区域,默认为黑色
img.fill(255)
## 显示中文
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
## 显示双坐标
fig, axes = plt.subplots(nrows=3, ncols=3)
坐标1
axes0.set_title('aaa', fontsize=17)
axes0.set_xlim(0, len(all_algs)+1)
axes0.set_xticks(range(1, 10))
axes0.set_ylim(0, 105)
axes0.grid(True)
坐标2(子坐标)
ax2 = axes0.twinx()
具体用法跟上面一样
ax2.set_ylabel('Number')
ax2.set_ylim(0, 5)
ax2.bar(x, fine, color='b', alpha=0.4, width=0.4, label=alg)
ax2.legend(prop={'size': 11}, loc="upper right" , labelcolor='linecolor')
## 坐标显示中文
axes0.set_xticks([1, 2, 3], ['a', 'b', 'c'])
## 坐标轴倾斜
axes0.set_xticklabels(all_algs, rotation=15)
## 坐标轴显示分式
latex语法即可
axes.set_xlabel(r'aaa ($\frac{y}$)', fontsize=16)
评论 (0)