当我想计算图像的熵时,我只得到了空白的白色图像。我怎样才能用正确的方式做?
def entropy_of_image(image):
image_gray = rgb2gray(image)
f_size = 20
radi = list(range(1,10))
entropy_tmp = entropy(image_gray, disk(radi[8]))
plt.savefig('images/tmpentropy.jpg')
return entropy_tmp
我称之为
default_file = 'images/myimage.jpg'
filename = os.path.join(default_file)
img = io.imread(filename)
img = img_as_float(img)
gray_entropy = entropy_of_image(img)
使用这些:
from skimage import data
from skimage import data_dir
from skimage.util import img_as_ubyte
from skimage.filters.rank import entropy
from skimage.morphology import disk
from skimage import io
import os
from skimage.transform import rescale, resize, downscale_local_mean
import matplotlib.pyplot as plt
from skimage.io import imread, imshow
from skimage import data
from skimage.util import img_as_ubyte
from skimage.filters.rank import entropy
from skimage.morphology import disk
from skimage import data, color
from skimage.color import rgb2hsv, rgb2gray, rgb2yuv
from skimage.feature import canny
from skimage.transform import hough_circle, hough_circle_peaks
from skimage.draw import circle_perimeter
当您编写plt.savefig('images/tmpentropy.jpg')
时,您认为pyplot会向该JPEG文件写入什么?你没有给pyplot任何要写的数组。savefig
将当前图形窗口写入文件。因为你没有创建一个图形窗口,也没有向该图形窗口写入任何内容,所以没有什么可以保存到文件中,在这种情况下,pyplot显然更喜欢写一个空白图像,而不是给出错误消息。
如果您首先在图形窗口中显示您的图像,那么savefig
将有一些内容要写入该文件。然而,它将是图形窗口中的内容:周围有轴的图像和大量空白。这就像是对pyplot显示器进行屏幕截图:
plt.imshow(entropy_tmp)
plt.savefig('images/tmpentropy.jpg')
将图像保存到文件的更好方法是使用适当的图像文件写入功能,如imageio.imwrite
、matplotlib.pyplot.imsave
、skimage.io.imsave
等。
由于您使用scikit图像来读取图像文件,因此让我们也使用它来编写输出图像文件:
default_file = 'images/myimage.jpg'
filename = os.path.join(default_file)
img = io.imread(filename)
img = img_as_float(img)
gray_entropy = entropy_of_image(img)
skimage.io.imsave('images/tmpentropy.jpg', gray_entropy)
(不要让你的计算函数entropy_of_image()
写图像文件,让每个函数只做一件事!(