我对输入图像进行了一些处理,并使用cv2.imwrite方法保存了最终图像,输入图像大小为1.2MB(3120 * 4160像素),保存的图像大小为2.8MB(3111 * 4151),是输入图像大小的两倍以上。
经过一些研究,我发现opencv以16位速率保存图像,因此我使用scipy.misc.imsave保存图像,这解决了我的问题,结果大小减小到1.1MB,但是颜色图改变了,原始图像和处理后的图像颜色不同。
任何人都可以阐明为什么会发生这种情况吗?为什么在cv2写方法下图像尺寸几乎翻倍,为什么我使用scipy写方法会丢失颜色?
from matplotlib import pyplot
import cv2
from scipy.misc import imsave
'''
read the input image here (jpg format) and image segmentation code here
'''
pyplot.imsave('py_result.jpg', final_img) #this one doubles the image size and also changes the color, why is there a size bump?
cv2.imwrite('cv2_result.jpg', final_img) #this one almost doubles the image size
imsave('scipy_result.jpg', final_img) #this one doesnot bump the image size but changes the color in output image
以下是参考图片:
这是输入图像。
使用scipy.imsave()保存的已处理图像,您可以看到输入图像中的蓝色文本已变为红色。