图像处理-matplotlib显示opencv图像

王 茂南 2019年8月29日07:37:29
评论
1462字阅读4分52秒
摘要这一部分主要介绍图像显示的时候会遇到的问题, 使用matplotlib显示opencv图像, 与遇到的颜色变换的问题, 即从BGR转换为RGB.

简介

我们在处理图像的时候, 会使用到 matplotlib 和 opencv 两个库, 但是在实际的使用的时候,  我们会遇到颜色显示不正常的情况, 这是因为 matplotlib 使用的颜色模式是我们现在流行的 RGB 模式,而 opencv 使用的是 BGR 模式,即 RGB 的倒序模式,与我们通常的 RGB 是反向的。因此在使用 matplotlib 显示之前需要做一下图像颜色的转换。

所以这一篇主要介绍一下转换的方式, 主要参考链接如下.

参考资料: 为什么matplotlib显示opencv图像不正常

matplotlib 显示 opencv 图像

我们首先看一下如果不进行转换的话, 直接显示会是什么样子的.

  1. # 加载本地图片
  2. img_path1 = "./data/Preprocess/402_2000.jpg"
  3. img_check1 = cv2.imread(img_path1, cv2.IMREAD_COLOR)
  4. print(img_check1.shape)
  5. # 图片进行显示
  6. fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(7,7))
  7. axes.axis("off")
  8. axes.imshow(img_check1)

最终显示的效果如下:

图像处理-matplotlib显示opencv图像

我们只需要使用下面的语句就可以完成 BGR 到 RGB 的转换.

  1. img_check1 = cv2.cvtColor(img_check1, cv2.COLOR_BGR2RGB) # BGR => RGB

最后我们得到的效果如下所示:

  1. # 加载本地图片
  2. img_path1 = "./data/Preprocess/402_2000.jpg"
  3. img_check1 = cv2.imread(img_path1, cv2.IMREAD_COLOR)
  4. img_check1 = cv2.cvtColor(img_check1, cv2.COLOR_BGR2RGB) # BGR => RGB
  5. print(img_check1.shape)
  6. # 图片进行显示
  7. fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(7,7))
  8. axes.axis("off")
  9. axes.imshow(img_check1)
图像处理-matplotlib显示opencv图像

可以看到这样脸的颜色会看起来稍微正常一些.

 

读取和显示灰度图

读取灰度图

  1. # Using cv2.imread() method 
  2. # Using 0 to read image in grayscale mode 
  3. img = cv2.imread(path, 0)

在imread里面, 第二个参数设置为0, 此时读取的就是灰度图.

显示灰度图

同样,我们可以使用 matplotlib 来显示灰度图。只需要在 imshow 的部分设置 cmap='gray' 即可

  1. plt.imshow(arr, cmap='gray', vmin=0, vmax=255)

完成的实例代码如下所示:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from PIL import Image
  4. fname = 'image.png'
  5. image = Image.open(fname).convert("L")
  6. arr = np.asarray(image)
  7. plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
  8. plt.show()

参考资料Display image as grayscale using matplotlib

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2019年8月29日07:37:29
  • 转载请务必保留本文链接:https://mathpretty.com/11045.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: