python opencv修改保存的图片质量

1、使用opencv保存图像

cv2.imwrite(存储路径,图像变量[,存盘标识])

存盘标识:

  1.  cv2.CV_IMWRITE_JPEG_QUALITY  设置图片格式为.jpeg或者.jpg的图片质量,其值为0---100(数值越大质量越高),默认95
  2.    cv2.CV_IMWRITE_WEBP_QUALITY  设置图片的格式为.webp格式的图片质量,值为0--100
  3.   cv2.CV_IMWRITE_PNG_COMPRESSION  设置.png格式的压缩比,其值为0--9(数值越大,压缩比越大),默认为3

例如:

cv2.imwrite('img.jpg',img,[int(cv2.IMWRITE_JPEG_QUALTY),70])  把img变量保存到img.png,图片品质为70

import cv2
 
cv2.namedWindow("Image") #创建窗口
 
img = cv2.imread('ver.jpg')
cv2.imshow("Image",img)
 
cv2.imwrite('test.jpg',img,[int(cv2.IMWRITE_JPEG_QUALITY),70])
 
cv2.waitKey(0)
cv2.destroyWindow("Image")  #关闭窗口

转载自:http://www.cnblogs.com/sunshenggang/p/9279373.html

<think>嗯,用户的问题是关于如何在Python中使用matplotlib保存图片后,再次加载并进行二次编辑的图像处理。首先,我需要理解用户的具体需求。他们可能已经生成了一个图表,保存图片文件,现在想要重新打开这个图片进行修改,比如调整颜色、添加标注或者应用滤镜等。 首先,我应该考虑matplotlib保存图片通常是位图格式,比如PNG、JPG,或者是矢量图如PDF、SVG。用户提到的二次编辑可能涉及两种方式:一种是重新生成图表并修改代码,另一种是直接对保存图片文件进行处理。根据用户的问题,他们可能指的是后者,即直接处理已保存的图像文件,而不是重新生成图表。 接下来,我需要回忆如何用Python加载图像文件。常用的库有OpenCVcv2)和PIL(Pillow)。这两个库都可以读取图片文件并将其转换为数组,方便后续处理。需要注意的是,OpenCV默认读取的是BGR格式,而matplotlib使用RGB,所以在显示时可能需要转换颜色空间,避免颜色偏差,这一点在引用[3]中提到过。 然后,用户可能需要了解如何对加载后的图像进行二次编辑。例如,调整亮度、对比度,添加文本,或者应用滤波处理,比如中值滤波、高斯滤波等。引用[3]中的例子展示了使用不同滤波方法处理图像,这可能对用户有帮助。 另外,用户可能想知道如何保存修改后的图像。这可以通过OpenCVcv2.imwrite()或Pillow的Image.save()方法实现。需要提醒用户注意保存时的文件格式和颜色通道是否正确。 我还需要考虑用户可能的误区。例如,直接编辑保存图片会丢失原始数据的矢量信息,尤其是如果是位图,放大可能导致失真。而如果是矢量图,如PDF或SVG,可能需要不同的处理方式,比如使用svgutils库来编辑SVG文件。但用户的问题可能更偏向于处理位图,所以重点应放在位图处理上。 最后,生成相关问题时要覆盖用户可能进一步想知道的内容,比如不同图像处理库的区别、颜色空间转换的重要性,或者如何应用特定的图像处理技术。</think>在Python中使用matplotlib保存图片后,可以通过以下两种方式实现二次编辑: ### 方法一:重新生成图像(推荐) 1. **保存原始数据**:建议在首次生成图像时保留数据数组和绘图参数 2. **修改代码重新绘图**: ```python import matplotlib.pyplot as plt import numpy as np # 原始数据保存 x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) # 重新生成图像 plt.figure(figsize=(10,6)) plt.plot(x, y, color='blue') # 可修改线条颜色 plt.title("修改后的标题") # 修改标题 plt.savefig('modified_figure.png') # 重新保存 ``` ### 方法二:直接编辑图像文件 1. **使用OpenCV读取/处理**: ```python import cv2 # 读取保存图片 img = cv2.imread('original_figure.png') # 转换为RGB格式(OpenCV默认BGR格式) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 示例:添加红色文本 cv2.putText(img_rgb, '新增标注', (100,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0,0), 2) # 保存修改后的图像 cv2.imwrite('modified_image.png', cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)) ``` 2. **使用Pillow处理**: ```python from PIL import Image, ImageDraw # 打开图像文件 img = Image.open('original_figure.png') # 创建绘图对象 draw = ImageDraw.Draw(img) # 添加绿色矩形 draw.rectangle([(50,50), (200,200)], outline=(0,255,0), width=3) # 保存修改 img.save('modified_with_pillow.png') ``` ### 注意事项: 1. 位图编辑会降低图像质量,建议优先选择矢量图格式(PDF/SVG) 2. 颜色空间转换至关重要,OpenCV使用BGR格式,matplotlib使用RGB格式[^3] 3. 对图像进行滤波处理时,可参考中值滤波、高斯滤波的实现方法 4. 修改文本标注时,位图方式无法修改原始文字内容,只能覆盖添加 ### 矢量图编辑示例(SVG格式): ```python # 保存时使用矢量格式 plt.savefig('figure.svg') # 使用svgutils修改 import svgutils.transform as sg fig = sg.fromfile('figure.svg') fig.append(sg.TextElement(100,100, '新增标注', size=12)) fig.save('modified_figure.svg') ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值