Python + OpenCV获取灰度图的三种方式

作者:很菜不狗2024.02.04 06:52浏览量:27

简介:本文介绍了使用Python和OpenCV库获取灰度图的三种方式:使用cvtColor函数、创建灰度掩码和使用numpy的dot函数和flatten函数。这些方法各有特点,可以根据具体情况选择适合的方法来处理灰度图像。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在Python中,使用OpenCV库获取灰度图有多种方式。以下是三种常见的方法:
方法一:使用cvtColor函数
OpenCV的cvtColor函数可以将彩色图像转换为灰度图像。以下是一个示例代码:

  1. import cv2
  2. # 读取彩色图像
  3. img = cv2.imread('image.jpg')
  4. # 使用cvtColor函数转换为灰度图像
  5. gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  6. # 显示灰度图像
  7. cv2.imshow('Grayscale Image', gray_img)
  8. cv2.waitKey(0)
  9. cv2.destroyAllWindows()

在这个例子中,我们首先使用imread函数读取一张彩色图像。然后,使用cvtColor函数将图像从BGR色彩空间转换为灰度空间。最后,使用imshow函数显示灰度图像。
方法二:使用灰度掩码
我们还可以通过创建一个灰度掩码来获取灰度图像。以下是一个示例代码:

  1. import cv2
  2. import numpy as np
  3. # 读取彩色图像
  4. img = cv2.imread('image.jpg')
  5. # 创建一个全黑的灰度掩码
  6. mask = np.zeros(img.shape[:2], dtype=np.uint8)
  7. # 将彩色图像与灰度掩码进行按位与运算,得到灰度图像
  8. gray_img = cv2.bitwise_and(img, mask)
  9. # 显示灰度图像
  10. cv2.imshow('Grayscale Image', gray_img)
  11. cv2.waitKey(0)
  12. cv2.destroyAllWindows()

在这个例子中,我们首先创建一个全黑的灰度掩码,其大小与输入图像相同。然后,使用bitwise_and函数将彩色图像与灰度掩码进行按位与运算,得到灰度图像。最后,使用imshow函数显示灰度图像。
方法三:使用numpy的dot函数和flatten函数
我们还可以使用numpy的dot函数和flatten函数来获取灰度图像。以下是一个示例代码:
```python
import cv2
import numpy as np

读取彩色图像

img = cv2.imread(‘image.jpg’)

将BGR图像转换为RGB图像(numpy默认使用RGB格式)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

将RGB图像展平为一维向量,并计算均值得到灰度值(0-255)

gray_value = np.dot(img, [0.07056314, 0.76398698, 0.1848247]) / 0.11059465 * 255
gray_img = np.full(img.shape, gray_value).flatten() / 255
gray_img = gray_img.astype(np.uint8)

显示灰度图像

cv2.imshow(‘Grayscale Image’, gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```在这个例子中,我们首先将BGR图像转换为RGB图像,然后展平为一维向量。接着,我们计算均值得到灰度值,并将其转换为0-255范围内的整数。最后,我们使用full函数创建一个全黑的灰度图像,并使用flatten函数将其展平为一维向量。最后,我们将结果转换为uint8类型,并使用imshow函数显示灰度图像。

article bottom image

相关文章推荐

发表评论