摘要

使用opecv过程中经常需要使用plt输出图片作为前后对比,方便观察。
但是会出现plt显示时,颜色偏差严重的情况。
这是因为plt和imread二者颜色通道不同导致。
先看看图片
image.png

代码

首先通过imread读入源图并显示。

  1. import cv2 as cv
  2. import numpy as np
  3. import copy
  4. import random
  5. from matplotlib import pyplot as plt
  6. # cv.imread 读取图像格式为b,g,r
  7. img = cv.imread('1.jpg')

然后 采用plt方法进行显示。
把imread生成的img使用plt输出。

  1. plt.imshow(img)
  2. plt.show()

看看结果:

image.png
出现了色差

原因:

cv.imread 读取图像格式为b,g,r
但是 plt显示按照 rgb次序!因此要转换一下。
image.png

解决方法:

加入下面的代码

  1. b,g,r = cv.split(img)
  2. img_rgb = cv.merge([r,g,b])
  1. import cv2 as cv
  2. import numpy as np
  3. import copy
  4. import random
  5. from matplotlib import pyplot as plt
  6. # cv.imread 读取图像格式为b,g,r
  7. img = cv.imread('1.jpg')
  8. #如果本身是彩图 似乎也没什么影响!
  9. #plt显示按照 rgb次序!因此要转换
  10. b,g,r = cv.split(img)
  11. img_rgb = cv.merge([r,g,b])
  12. plt.imshow(img_rgb)
  13. plt.show()

看看结果

image.png

https://blog.csdn.net/whiffeyf/article/details/104756062