想象一下,我有一个图像,我想分割它并看到RGB通道。我怎么能用python做到这一点?
答案 0 :(得分:0)
我最喜欢的方法是使用scikit-image。它建立在numpy / scipy之上,图像内部存储在numpy-arrays中。
你的问题有点模糊,所以很难回答。我不确切地知道你想做什么,但会告诉你一些代码。
我将使用this test image。
import skimage.io as io
import matplotlib.pyplot as plt
# Read
img = io.imread('Photodisc.png')
# Split
red = img[:, :, 0]
green = img[:, :, 1]
blue = img[:, :, 2]
# Plot
fig, axs = plt.subplots(2,2)
cax_00 = axs[0,0].imshow(img)
axs[0,0].xaxis.set_major_formatter(plt.NullFormatter()) # kill xlabels
axs[0,0].yaxis.set_major_formatter(plt.NullFormatter()) # kill ylabels
cax_01 = axs[0,1].imshow(red, cmap='Reds')
fig.colorbar(cax_01, ax=axs[0,1])
axs[0,1].xaxis.set_major_formatter(plt.NullFormatter())
axs[0,1].yaxis.set_major_formatter(plt.NullFormatter())
cax_10 = axs[1,0].imshow(green, cmap='Greens')
fig.colorbar(cax_10, ax=axs[1,0])
axs[1,0].xaxis.set_major_formatter(plt.NullFormatter())
axs[1,0].yaxis.set_major_formatter(plt.NullFormatter())
cax_11 = axs[1,1].imshow(blue, cmap='Blues')
fig.colorbar(cax_11, ax=axs[1,1])
axs[1,1].xaxis.set_major_formatter(plt.NullFormatter())
axs[1,1].yaxis.set_major_formatter(plt.NullFormatter())
plt.show()
# Plot histograms
fig, axs = plt.subplots(3, sharex=True, sharey=True)
axs[0].hist(red.ravel(), bins=10)
axs[0].set_title('Red')
axs[1].hist(green.ravel(), bins=10)
axs[1].set_title('Green')
axs[2].hist(blue.ravel(), bins=10)
axs[2].set_title('Blue')
plt.show()