gpt4 book ai didi

python - skimage.io.imread 与 cv2.imread

转载 作者:行者123 更新时间:2023-12-04 04:19:06 25 4
gpt4 key购买 nike

我正在使用并熟悉 cv2 ,今天我正在尝试使用 skimage .

我试图使用 skimage 读取图像和 cv2 .似乎他们都完美地阅读了图像。但是当我绘制图像的直方图但读取不同的库( skimagecv2 )时,直方图显示出显着差异。

有人会通过解释直方图之间的差异来帮助我吗?

我的代码:

import cv2
import skimage.io as sk
import numpy as np
import matplotlib.pyplot as plt

path = '../../img/lenna.png'

img1 = sk.imread(path, True)
img2 = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
print(img1.shape)
print(img2.shape)

plt.subplot(2, 2, 1)
plt.imshow(img1, cmap='gray')
plt.title('skimage read')
plt.xticks([])
plt.yticks([])

plt.subplot(2, 2, 2)
plt.imshow(img2, cmap='gray')
plt.title('cv2 read')
plt.xticks([])
plt.yticks([])

plt.subplot(2, 2, 3)
h = np.histogram(img1, 100)
plt.plot(h[0])
plt.title('skimage read histogram')

plt.subplot(2, 2, 4)
h = np.histogram(img2, 100)
plt.plot(h[0])
plt.title('cv2 read histogram')

plt.show()


文本输出:

(512, 512)
(512, 512)

输出:

code output

编辑:

这是输入图像:

最佳答案

两人imread函数只是有一个不同的默认格式来读取图像。 skimage.io标准使用 64 位浮点数,而 cv2标准似乎是无符号字节。
您可以通过转换 img1 看到这一点到无符号字节格式。

import skimage as skk
img1 = skk.img_as_ubyte(img1)

现在您将得到有些相似的直方图。它们并不完全相同,因为它们最初被读取为不同的格式。

img

关于python - skimage.io.imread 与 cv2.imread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com