Python 打开的cv内存图像与保存的图像不同

Python 打开的cv内存图像与保存的图像不同,python,opencv,scikit-image,Python,Opencv,Scikit Image,我正在阅读有关本地二进制模式的内容,我有以下代码来提取本地二进制模式 from skimage import feature import cv2 as cv img = cv.imread("image.jpg",0) lbp = feature.local_binary_pattern(img,8,1,"default") cv.imshow("LBP",lbp) 输出图像如下所示 原始图像是 但当我保存图像并使用以下代码将其加载回时 from skimage import fea

我正在阅读有关本地二进制模式的内容,我有以下代码来提取本地二进制模式

from skimage import feature
import cv2 as  cv 
img = cv.imread("image.jpg",0)
lbp = feature.local_binary_pattern(img,8,1,"default")
cv.imshow("LBP",lbp)
输出图像如下所示

原始图像是

但当我保存图像并使用以下代码将其加载回时

from skimage import feature
import cv2 as  cv 
img = cv.imread("image.jpg",0)
lbp = feature.local_binary_pattern(img,8,1,"default")
cv.imwrite("new_lbp.jpg",lbp)
newim = cv.imread("new_lbp.jpg",0)
cv.imshow("new image",newim)
图像如下所示。


为什么这两张图片看起来不同?有人能帮我理解吗?

Opencv在保存jpg图像时遇到一些问题,因此您可以使用其他格式,如bmp

难道您不应该在
cv.imshow(“新图像”,img)时使用
newim
@ZdaR是的,你是对的,我刚刚编辑了代码。那么输出肯定也发生了变化@Mitiku?@ZdaR在发布到stackoverflow时犯了错误,而不是在本地代码中。imwrite和imread用于图像。并非所有矩阵都表示图像。“lbp”包含不代表像素的值。您可以像保存/加载任何其他numpy数组一样保存/加载,这样做很好。它应该是png而不是bng。是的,但应该是bmpit可以是任何无损图像格式,但事实并非如此,因为数据不表示像素值。注OpenCV支持图像格式Windows位图(bmp)、便携式图像格式(pbm、pgm、ppm)和太阳光栅(sr、ras)。在插件的帮助下(如果您自己构建库,您需要指定使用它们,但是在我们默认提供的软件包中),您还可以加载JPEG(JPEG,jpg,jpe)、JPEG 2000(jp2-在CMake中代号为Jasper)、TIFF文件(TIFF,tif)和便携式网络图形(png)等图像格式。有关更多信息,请阅读本文档