首页 > 其他分享 >关于plt.imshow显示图像发蓝问题的解决办法

关于plt.imshow显示图像发蓝问题的解决办法

时间:2024-02-02 09:37:29浏览次数:17  
标签:plt img cv2 imshow 发蓝 图像 import

彩色图像出现色差

使用cv2.imread()读取图像时,默认彩色图像的三通道顺序为B、G、R,这与我们所熟知的RGB中的R通道和B通道正好互换位置了。

而使用plt.imshow()函数却默认显示图像的通道顺序为R、G、B,导致图像出现色差发蓝。

彩色图像出现色差代码:

1 import cv2
2 import numpy as np
3 import matplotlib.pyplot as plt
4 
5 img = cv2.imread('Lena.jpg')
6 plt.xticks([]), plt.yticks([])         #隐藏x轴和y轴
7 
8 plt.imshow(img)
9 plt.show()

运行结果如图1-1所示,其颜色偏蓝,怪吓人的:

                

 解决办法:重新组合

 1 import cv2
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 
 5 img = cv2.imread('Lena.jpg')
 6 
 7 b,g,r = cv2.split(img)            #分别提取B、G、R通道
 8 img2 = cv2.merge([r,g,b])    #重新组合为R、G、B
 9 
10 #或者直接 img2 =  cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
11 
12 plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
13 
14 plt.imshow(img2)
15 plt.show()

运行结果如图1-2所示,将BGR调整回RGB后其能正常显示:

                 

 

标签:plt,img,cv2,imshow,发蓝,图像,import
From: https://www.cnblogs.com/Zhouce/p/18002540

相关文章

  • (GPLT)上海理工大学校内选拔赛(重现赛)
    题目链接A.记录最大值和个数,和次大值遍历数组,不是最大值,输出该数与最大值的和是最大值,则讨论最大值个数,若只有一个,输出该数与次大值的和,否则输出最大值的两倍#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){......
  • plt输出的图分辨力太低怎么办
    如果使用的是Python中的Matplotlib库来绘制图形,而输出的图像分辨率较低,可以考虑以下几种方法来提高图像的分辨率:调整图像尺寸和分辨率:在调用plt.figure()创建图形对象时,可以通过设置figsize参数来调整图像的大小,通过设置dpi参数来调整图像的分辨率。例如:importmatplotlib.pyplot......
  • 深入浅出 PLT/GOT Hook与原理实践
    动态链接计算机程序链接时分两种形式:静态链接和动态链接。静态链接在链接时将所有目标文件中的代码、数据等Section都组装到可执行文件当中,并将代码中使用到的外部符号(函数、变量)都进行了重定位。因此在执行时不需要依赖其他外部模块即可执行,并且可以获得更快的启动时间和执行速......
  • `plt.subplots()`是matplotlib库中的一个函数,用于创建一个新的图形窗口和一组子图²。
    `plt.subplots()`是matplotlib库中的一个函数,用于创建一个新的图形窗口和一组子图²。以下是它的参数说明:-`nrows`:整数,默认为1。设置图表的行数¹²。-`ncols`:整数,默认为1。设置图表的列数¹²。-`sharex`,`sharey`:布尔值或{'none','all','row','col'},默认为False。控制x(s......
  • 解决利用plt.plot绘图时,横坐标出现浮点小数而不是整数的情况(坐标轴刻度)
    解决利用plt.plot绘图时,横坐标出现浮点小数而不是整数的情况(坐标轴刻度)在使用matplotlib库的plt.plot函数进行绘图时,有时会遇到横坐标出现浮点小数的情况,而我们希望的是整数刻度。这可能会导致图表的可读性降低,因此需要解决这个问题。问题描述假设我们有一个数据集,横坐标表示时......
  • plt.scatter 中cmap参数详解
    plt.scatter中cmap参数详解 1.首先,cmap参数和c参数配合使用的。参数c可以是一个序列,如:plt.scatter(a,b,c=['b','r','b','r','b'],s=80)此时c的序列是一个颜色序列,除了上述的简洁写法,还可以使用RGB或RBGA:plt.scatter(a,b,c=['#f00','#0f0','#f00�......
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
    A.AXorBProblem(计数)输入511223输出9说明点击查看代码#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false);cin.tie(0),cout.tie(0)#defineintlonglongusingnamespacestd;constintN=2e5+10;unordered_map<int,int>......
  • 用matplotlib迭代画图,在plt.show()执行后代码暂停
    https://tieba.baidu.com/p/4778495824幸好刚刚找到答案了,对于题主来说可能是帮不上忙了,但是对于碰巧搜到这里的同萌们可能会方便很多,最简实现如下(Python3.6.2):importmatplotlib.pyplotaspltimportnumpyasnpplt.ion()#开启interactivemodex=np.linspace(0,50,1000)pl......
  • plt.rcParams运行时修改全局配置参数
    plt.rcParams简单介绍plt.rcParams即"运行时配置参数"("runtimeconfigurationparameters"),是运行时配置参数而不是永久性地更改默认配置,一次性地设置多个参数,以便于创建具有一致样式的图表,但是如果你只想对特定图形进行样式修改,最好直接在绘制代码中使用相关的函数和参数。(......
  • plt.Rectangle((x0, y0), w, h)参数解释
    plt.Rectangle((x0,y0),w,h)中的(x0,y0)表示矩形的左上角坐标,而不是中心点或左下角坐标。这个函数用于在Matplotlib中绘制矩形,其中(x0,y0)是矩形的左上角的坐标,w是矩形的宽度,h是矩形的高度。如果你想要绘制一个以(x0,y0)为中心的矩形,你需要根据中心坐标计算出左......