我正在从安全摄像头导入图像进行图像处理。导入图像后,我想保存图像以进行存档(处理将即时进行)。
我看到有两种可用的方法:
在使用下面的代码进行测试时,我发现了以下结果:
因此,我的问题是:哪种方法更好?我想保留尽可能多的信息。为什么图像之间存在如此差异?
import requests
import numpy as np
import cv2 as cv
response = requests.get(cam_url, auth=login)
image = cv.imdecode(np.frombuffer(response.content, dtype=np.uint8), -1)
with open('file_method.jpg', 'wb') as f:
f.write(response.content)
cv.imwrite('opencv_method.jpg', image)
注意:
系统信息:
如果您的目标是尽可能保留质量,则应使用
write()
方法,因为它完全保留了您从原始 Feed 中获得的质量。
使用
cv2.imwrite()
可能会降低质量,或增加不必要的膨胀,但它无法提高质量。
两者不同的原因很可能是由于 JPEG 质量设置不同。您可以通过以下方式探索原始图像与 OpenCV 保存图像的参数:
exiftool YOURIMAGE
或者,以更有针对性的方式,使用:
exiftool -filesize -JPEGQualityEstimate -n YOURIMAGE
输出将类似于此:
File Size : 292000
JPEG Quality Estimate : 75