在python中将PNG转换为JPG

在python中将PNG转换为JPG,python,image,opencv,image-processing,scikit-image,Python,Image,Opencv,Image Processing,Scikit Image,我试图比较两幅图像,一幅是a.png,另一幅是a.jpg。因此,我需要将.png文件转换为.jpg,以获得更接近SSIM的值。下面是我尝试过的代码,但出现了以下错误: AttributeError:“tuple”对象没有属性“dtype” 在演示如何将图像从.png格式转换为.jpg格式之前,我想指出,您使用的库应该保持一致。目前,您正在将scikit图像与opencv混合使用。最好选择一个库并坚持使用它,而不是使用scikit读取图像,然后使用opencv转换为灰度 要使用OpenCV将.pn

我试图比较两幅图像,一幅是a
.png
,另一幅是a
.jpg
。因此,我需要将
.png
文件转换为
.jpg
,以获得更接近SSIM的值。下面是我尝试过的代码,但出现了以下错误:

AttributeError:“tuple”对象没有属性“dtype”


在演示如何将图像从
.png
格式转换为
.jpg
格式之前,我想指出,您使用的库应该保持一致。目前,您正在将scikit图像与opencv混合使用。最好选择一个库并坚持使用它,而不是使用scikit读取图像,然后使用opencv转换为灰度

要使用OpenCV将
.png
图像转换为
.jpg
图像,可以使用。注意:对于
.jpg
.jpeg
格式,要保持最高质量,必须从
[0..100]
中指定质量值(默认值为95)。只需这样做:

import cv2

# Load .png image
image = cv2.imread('image.png')

# Save .jpg image
cv2.imwrite('image.jpg', image, [int(cv2.IMWRITE_JPEG_QUALITY), 100])

函数
skimage.io.imsave
希望您为它提供一个文件名和一个要保存在该文件名下的数组。例如:

skimage.io.imsave("image.jpg", image)
其中,
image
是一个numpy数组

您在此处使用不正确:

image2 = io.imsave("jpgtest.jpg", (76, 59))
您正在将
imsave
函数的输出分配给
image2
,我认为这不是您想要做的



您可能不需要将图像转换为JPG,因为skimage库已经自己处理了所有这些转换。您通常只加载带有
imread
(不管它们是PNG还是JPG,因为它们是以numpy数组表示的)的图像,然后执行所有必要的计算。

在不转换和使用skimage.measure.compare(两幅图像应该接近像素完美)时,我得到的值非常低,.2-0.4范围左右。这就是为什么我认为我需要在使用SSIM之前进行转换。请分享整个错误消息。你没有电话吗?其中一个答案指出,您似乎混合了多个图像处理库。你能澄清一下吗?
image2 = io.imsave("jpgtest.jpg", (76, 59))