plt图像保存有白边
参考:Python中plt.plot图像保存有白边,CV2.polyline,fillpoly的参数问题,图像保存颜色发生异常
改用CV2就可以完美的解决这个问题,试一下后,不错~,因为opencv展示时,是按照图片的大小来展示的
使用cv2
im = cv2.imread('demo.jpg')
cv2.imshow('image',im)
cv2.imwrite('aa.jpg',img)
在mmdetection中,注释部分是使用plt,保存之后会有白边,改为cv2后,如下图所示
img = model.show_result(img, result, score_thr=score_thr, show=False)
# plt.figure(figsize=fig_size)
# plt.xticks([])
# plt.yticks([])
# plt.axis('off')
# plt.imshow(mmcv.bgr2rgb(img))
# OpenCV和Matplotlib中图片的像素排列方式略有不同。OpenCV中图片像素按照BGR方式排列,
# 而Matpoltlib中图片按照RGB方式排序,这样使用OpenCV读入的图片经过Matplotlib展示时,就会出现反相问题。
# 因此,使用plt需要用mmcv.bgr2rgb(img),cv2则不需要。
assert show_dir,('please specify show dir to save result image (djj)')
if(result_img_name==None):
#plt.savefig(show_dir+'/result_image.png')
cv2.imwrite(show_dir+'/result_image.png',img)
else:
cv2.imwrite(show_dir +'/'+result_img_name,img)
#plt.savefig(show_dir+'/'+result_img_name)
颜色不正常
OpenCV和Matplotlib中图片的像素排列方式略有不同。OpenCV中图片像素按照BGR方式排列,而Matpoltlib中图片按照RGB方式排序,这样使用OpenCV读入的图片经过Matplotlib展示时,就会出现反相问题。所以需要注意plt.imshow(img)中img的格式,如果是RGB格式则没有问题,如果是BGR格式,则需要转为RGB格式,再用plt.imshow.