python保存图片时和原图大小一致
之前遇到过一次这个问题,当时解决了但是忘了记录,这里再记录一次好了。matplotlib系列的整体代码如下:import cv2import matplotlib.pyplot as pltname="1-1.png"path="crop/"+namesrc = cv2.imread(path)img = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)# Opencv和m
·
之前遇到过一次这个问题,当时解决了但是忘了记录,这里再记录一次好了。
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)
# Opencv和matplotlib读取图片的渠道不同,需要转换
# cv2.imshow("original image", src)
# 获取图像的高度和宽度
plt.savefig('my_fig.png', dpi=my_dpi)
plt.imshow(img)
IMG = cv2.bitwise_not(img)
# 进行反色操作
# cv2.imshow("bitwise image", img)
mydpi=96
plt.figure(figsize=(Width/mydpi,Height/mydpi),dpi=mydpi)
# figsize中的单位是inches,重点解释一下这个figsize参数,先写宽度,再高度
"""
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中:
jupyter notebook中,再次恢复环境竟然好了,之前的报错信息大概就是plt.axis("off")
这个函数不接受bool类型的值
2. 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)
原图:
保存后的图:
参考——stack overflow的回答:Specifying and saving a figure with exact size in pixels
plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi=my_dpi)
# 假设有一个800×800pix的图,要显示在本机电脑dpi为96的电脑上,则要保持原图大小显示就可以使用上述代码。
plt.savefig('my_fig.png', dpi=my_dpi)
# 保存成相同分辨率,使用上述代码
# 如果想把分辨率提高10倍,则可以进行如下方式,则就保存了一个8000X8000的高清图
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 # size in pixels
更多推荐
已为社区贡献17条内容
所有评论(0)