Opencv 读取灰度图像会识别为3通道问题

场景:

我们都知道灰度图或者红外图都是单通道图片,而彩色图片是三通道图片。但是当我们用img.shape读取灰度图/红外图片的时候返回的却是三通道结果。

import cv2
 
img_path = r'灰度图'
img = cv2.imread(img_path)
print(img.shape) 
 
# 如果我将图片灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(gray.shape)
 
"""
img.shape返回的结果:
(201, 190, 3)
gray.shape返回的结果:
(201, 190)
"""

问题在于我们直接用opencv 读取图片时似乎都是三通道图片,只有在灰度处理后才回显示单通道。针对这一问题我查了些资料:

opencv在默认情况下会读取3个通道的图像,如果是灰度图/红外图片则会将其图层复制三次(BGR缺省,B==G==R),因此读出来的图片是三通道。

解决:

如果我们想一开始就按照单通道读取灰度图片/红外图片的话,可以在imread()函数中加入相关参数(cv2.IMREAD_GRAYSCALE):

import cv2
 
img_path = r'灰度图'
img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
print(img.shape)
 
"""
img.shape返回的结果:
(201, 190)
"""

 这样就会直接按照单通道的方式读取。

相关推荐

  1. Opencv 读取灰度图像识别3通道问题

    2024-03-31 18:52:06       36 阅读
  2. opencv读取二进制灰度图并显示

    2024-03-31 18:52:06       42 阅读
  3. OpenCV-图像通道处理

    2024-03-31 18:52:06       43 阅读
  4. 猫狗分类识别图像灰度化处理

    2024-03-31 18:52:06       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 18:52:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 18:52:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 18:52:06       82 阅读
  4. Python语言-面向对象

    2024-03-31 18:52:06       91 阅读

热门阅读

  1. MySQL——锁

    2024-03-31 18:52:06       44 阅读
  2. 提升学术水平,ChatGPT助你一臂之力

    2024-03-31 18:52:06       45 阅读
  3. android 快速实现 图片获取并裁剪(更换头像)

    2024-03-31 18:52:06       43 阅读
  4. python项目练习——7.网站访问日志分析器

    2024-03-31 18:52:06       35 阅读
  5. 数据可视化之多表显示

    2024-03-31 18:52:06       39 阅读
  6. 软件之禅(十一) 消息

    2024-03-31 18:52:06       35 阅读
  7. vim的缓冲区管理技能

    2024-03-31 18:52:06       32 阅读
  8. ChatGPT:学术界必备的写作利器

    2024-03-31 18:52:06       34 阅读
  9. C 语言练习分享

    2024-03-31 18:52:06       36 阅读
  10. leetcode 64.最小路径和

    2024-03-31 18:52:06       35 阅读
  11. vue组件的select怎么赋值?

    2024-03-31 18:52:06       42 阅读