python保存图片时和原图大小一致

文章目录

之前遇到过一次这个问题,当时解决了但是忘了记录,这里再记录一次好了。

  1. matplotlib系列的

整体代码如下:

import cv2
import matplotlib.pyplot as plt

name="1-1.png"
path="crop/"+name
src = cv2.imread(path)
img = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

plt.savefig('my_fig.png', dpi=my_dpi)
plt.imshow(img)

IMG = cv2.bitwise_not(img)

mydpi=96
plt.figure(figsize=(Width/mydpi,Height/mydpi),dpi=mydpi)

"""
figsize : (float, float), optional, default: None width, height in inches. If not provided, defaults to:rc:figure.figsize = [6.4, 4.8]
"""
plt.imshow(IMG)
plt.axis('off')

plt.savefig("processcrop/"+name,dpi=mydpi)

但是不知道为什么还是会有白边。。。

注意:
如果是在jupyter lab中, plt.axis('off')就不会有问题,但是在jupyter notebook中,就会报错。

jupyter lab中:

python保存图片时和原图大小一致
jupyter notebook中,再次恢复环境竟然好了,之前的报错信息大概就是 plt.axis("off")这个函数不接受bool类型的值
  1. opencv系列的

opencv默认保存就是和原图一样的大小

name="1-1.png"
path="crop/"+name
src = cv2.imread(path)

plt.imshow(src[:, :, ::-1])
plt.axis('off')

img = cv2.bitwise_not(src)
cv2.imwrite("processcrop/"+name,img)

原图:

python保存图片时和原图大小一致
保存后的图:
python保存图片时和原图大小一致

参考——stack overflow的回答:Specifying and saving a figure with exact size in pixels

plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi=my_dpi)

plt.savefig('my_fig.png', dpi=my_dpi)

plt.savefig('my_fig.png', dpi=my_dpi * 10)

另外根据另一个回答:How to get matplotlib figure size

import matplotlib.plt
fig = plt.figure()

size = fig.get_size_inches()*fig.dpi

Original: https://blog.csdn.net/Castlehe/article/details/116979507
Author: 吨吨不打野
Title: python保存图片时和原图大小一致

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704731/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球