如何使用pyplot正确显示图像的红色,绿色和蓝色(rgb)通道

时间:2017-06-26 04:03:22

标签: python image numpy matplotlib rgb

我有一个小项目,所以我在一周前开始对Python进行一些测试。我必须显示rgb图像的3个通道,但pyplot.imshow()功能显示以下内容:

Current display

我想要显示红色,绿色和蓝色通道,如下所示:

Red channel from RGB

这是我的代码,到目前为止:

from matplotlib import pyplot as plt
from PIL import Image
import numpy as np

img1 = np.array(Image.open('img1.png'))
figure, plots = plt.subplots(ncols=3, nrows=1)
for i, subplot in zip(range(3), plots):
    temp = np.zeros(img1.shape, dtype='uint8')
    temp = img1[:,:,i]
    subplot.imshow(temp)
    subplot.set_axis_off()
plt.show()

我不在任何笔记本电脑上工作。相反,我在PyCharm工作。我读过这篇文章:24739769。我检查了img1.dtypeuint8,所以我没有更多想法如何展示我想要的东西。

1 个答案:

答案 0 :(得分:1)

您只需要进行一项微小的更改:from matplotlib import pyplot as plt from PIL import Image import numpy as np img1 = np.array(Image.open('img1.png')) figure, plots = plt.subplots(ncols=3, nrows=1) for i, subplot in zip(range(3), plots): temp = np.zeros(img1.shape, dtype='uint8') temp[:,:,i] = img1[:,:,i] subplot.imshow(temp) subplot.set_axis_off() plt.show()

使用您展示的第一张图片的完整且可验证的示例:

def signupUser(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)

        if form.is_valid():
            form.save(commit=False)
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            form.save()
            user = authenticate(username=username, password=raw_password)
            if user is not None:
                login(request, user)
                return redirect('home')
    else:
        form = SignUpForm()

    return render(request, 'signup.html', {'form': form})

http://ideone.com/PyYD5p