使用 Python 将灰度图像转换为二值图像的问题
Problem on converting gray level image to binary image using Python
我对 Python 完全陌生。我拍了一张彩色照片。然后将其转换为灰度图像。到目前为止一切都很好。但是当我试图将这个灰度级转换为二值图像时,我得到的是黄色和紫色的彩色图像,而不是白色和黑色。
import matplotlib.pyplot as plt
import numpy as np
painting=plt.imread("ff.jpg")
print(painting.shape)
print("The image consists of %i pixels" % (painting.shape[0] * painting.shape[1]))
plt.imshow(painting);
#This displayed by color image perfectly
from skimage import data, io, color
painting_gray = color.rgb2gray(painting)
print(painting_gray)
io.imshow(painting_gray)
print("This is the Gray scale version of the original image")
#This displayed my gray scale image perfectly
#Now comes the code for binary image:
num = np.array(painting_gray)
print(num)
bin= num >0.5
bin.astype(np.int)
plt.imshow(bin)
#The display showed an image with yellow and purple color instead of white and black
我得到的图像图是:
The gray scale image:
The binary image that I got:
请帮我获取黑白二值图像。
尝试:
from skimage.filters import threshold_otsu
thresh = threshold_otsu(painting_gray)
binary = painting_gray> thresh
在此处阅读更多内容:
https://scikit-image.org/docs/stable/auto_examples/applications/plot_thresholding.html
https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html
这是因为imshow
使用了一个默认的颜色图,叫做viridis。使用从 min(img) 到 max(img) 的像素值比例从该颜色图中 select 编辑像素颜色。
有不止一种方法可以解决这个问题:
在imshow
中指定色图:
plt.imshow(bin, cmap='gray', vmin=0, vmax=255)
Select彩图:
plt.gray()
select彩色地图的另一种方法:
plt.colormap('gray')
旁注:bin
是一个用于转换二进制数的函数,因此将其用作变量名可能会导致您的代码出现问题。
我对 Python 完全陌生。我拍了一张彩色照片。然后将其转换为灰度图像。到目前为止一切都很好。但是当我试图将这个灰度级转换为二值图像时,我得到的是黄色和紫色的彩色图像,而不是白色和黑色。
import matplotlib.pyplot as plt
import numpy as np
painting=plt.imread("ff.jpg")
print(painting.shape)
print("The image consists of %i pixels" % (painting.shape[0] * painting.shape[1]))
plt.imshow(painting);
#This displayed by color image perfectly
from skimage import data, io, color
painting_gray = color.rgb2gray(painting)
print(painting_gray)
io.imshow(painting_gray)
print("This is the Gray scale version of the original image")
#This displayed my gray scale image perfectly
#Now comes the code for binary image:
num = np.array(painting_gray)
print(num)
bin= num >0.5
bin.astype(np.int)
plt.imshow(bin)
#The display showed an image with yellow and purple color instead of white and black
我得到的图像图是:
The gray scale image:
The binary image that I got:
请帮我获取黑白二值图像。
尝试:
from skimage.filters import threshold_otsu
thresh = threshold_otsu(painting_gray)
binary = painting_gray> thresh
在此处阅读更多内容: https://scikit-image.org/docs/stable/auto_examples/applications/plot_thresholding.html https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html
这是因为imshow
使用了一个默认的颜色图,叫做viridis。使用从 min(img) 到 max(img) 的像素值比例从该颜色图中 select 编辑像素颜色。
有不止一种方法可以解决这个问题:
在imshow
中指定色图:
plt.imshow(bin, cmap='gray', vmin=0, vmax=255)
Select彩图:
plt.gray()
select彩色地图的另一种方法:
plt.colormap('gray')
旁注:bin
是一个用于转换二进制数的函数,因此将其用作变量名可能会导致您的代码出现问题。