【发布时间】:2019-11-24 06:04:00
【问题描述】:
我尝试使用位移方法显示位平面图像。 但是,我总是得到所有子图的全黑图像。
import skimage.io as io
import skimage.util as util
import numpy as np
from matplotlib import pyplot as plt
from skimage.color import rgb2gray
import skimage.filters as fl
path = 'D:/Users/user/PycharmProjects/Image_Processing/Data/16.png'
w = io.imread(path)
# convert the colorful image to a grey scale image
gray = rgb2gray(w)
plt.imshow(gray, cmap=plt.get_cmap('gray'), vmin=0, vmax=1)
plt.show()
# bit shift for creating bit plane images
bps = [(np.uint8(gray) >> i) % 2 for i in range(8)]
# plot 8 subplots to show the result
for i in range(8):
plt.subplot(3, 3, i+1)
# add color map to assure the present color is in grey scale
io.imshow(bps[i], , cmap=plt.get_cmap('gray'))
plt.axis('off')
plt.show()
执行结果也会有一些警告:
D:\Users\user\Anaconda3\python.exe D:/Users/user/PycharmProjects/Image_Processing/read_image.py D:\Users\user\Anaconda3\lib\site-packages\skimage\io_plugins\matplotlib_plugin.py:75: UserWarning: Low image data range;显示具有拉伸对比度的图像。 warn("图像数据范围低;显示图像时"
进程以退出代码 0 结束
顺便说一句,如果我使用来自 otsu,yen,li 的过滤器和阈值。 我会得到预期的结果。
thresh = fl.threshold_otsu(gray)
binary = gray >= thresh
io.imshow(binary)
plt.show()
你能告诉我我原来的方法哪里出错了吗? 在其他一些线程中提到了将图片从一个类别转换为另一个类别的损失。 此外,我也可以使用纯opencv方法获得成功的结果。
我已经检查了以下相关线程,但我仍然不知道如何解决这个问题:
感谢您的帮助!
【问题讨论】:
标签: python scikit-image