Python中plt.plot图像保存有白边及颜色不正常

tech2023-02-19  102

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.

最新回复(0)