OpenCV图像灰度化的六种方法

Opencv4 官方文档 : https://docs.opencv.org/4.2.0/
Opencv4 for Python中文文档点击下载:Opencv4 for Python 中文文档

图像灰度化即是将一幅彩色图像转换为灰度化图像的过程。彩色图像通常包括R、G、B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色图像的R、G、B三个分量相等的过程。灰度图像中每个像素仅具有一种样本颜色,其灰度是位于黑色与白色之间的多级色彩深度,灰度值大的像素点比较亮,反之比较暗,像素值最大为255(表示白色),像素值最小为0(表示黑色)。比如下图就是灰度化后的图片:

在这里插入图片描述

1.环境

Python 3.7 + OpenCV 4.2

2.部分api及其参数解析

  1. 方法一:读取时灰度化处理
cv.imread(filename, cv.IMREAD_GRAYSCALE)

具体cv.imread及其使用方法参考博客OpenCV图像的加载、显示与保存

  1. 方法二:调用cvtColor灰度化,其中cvtColor如下:
cv.cvtColor(src, code, dst=None, dstCn=None)

参数 :

  • src:input image: 8-bit unsigned, 16-bit unsigned ( CV_16UC… ), or single-precision floating-point.输入图像,输入图像:8位无符号,16位无符号(CV_16UC …)或单精度浮点型,其实就是读取输入的原图像。
  • code:color space conversion code.色彩空间转换的代码或表示.
  • dst:output image of the same size and depth as src.输出图像,大小和深度与原输入图像一致.
  • dstCn:number of channels in the destination image; if the parameter is 0, the number of the channels is derived automatically from src and code.目标图像通道数,其值为0时,通道数由输入(src)和输入(code)图像决定.

3.灰度化方法实例及效果

3.1 读取时灰度化处理

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)
    gray1 = cv.imread(filePath,cv.IMREAD_GRAYSCALE)
    cv.imshow("read2gray",gray1)

    cv.waitKey(0)
    cv.destroyAllWindows()

在这里插入图片描述

3.2 调用cvtColor灰度化处理

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)
    gray2 = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    cv.imshow("cvtColor2gray", gray2)
    cv.waitKey(0)
    cv.destroyAllWindows()

在这里插入图片描述

3.3 平均值法:

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)
    #平均值法
    h, w = image.shape[:2]
    gray3 = np.zeros((h, w), dtype=np.uint8)
    for i in range(h):
        for j in range(w):
            gray3[i, j] = (int(image[i, j][0]) + int(image[i, j][1]) + int(image[i, j][2])) / 3
    cv.imshow("meanGray", gray3)

在这里插入图片描述

3.4 最大值法

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)
    #最大值法
    h, w = image.shape[:2]
    gray4 = np.zeros((h, w), dtype=np.uint8)  # 创建一个h行w列的二维list
    for i in range(h):
        for j in range(w):
           gray4[i, j] = max(image[i, j][0], image[i, j][1], image[i, j][2])
    cv.imshow("maxGray",gray4)

在这里插入图片描述

3.5 分量法

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)

    #分量法:
    gray6 = cv.imread(filePath, cv.IMREAD_COLOR)
    for i in range(gray6.shape[0]):
        for j in range(gray6.shape[1]):
            gray6[i, j] = gray6[i, j, 0]
    cv.imshow("componentGray",gray6)

在这里插入图片描述

3.6 加权平均法

def img2Gray(filePath):
    image = cv.imread(filePath)
    cv.imshow("sourcePic",image)
    #加权平均分
    h, w = image.shape[:2]
    gray5= np.zeros((h, w), dtype=np.uint8)
    for i in range(h):
        for j in range(w):
            # Y = 0.3R + 0.59G + 0.11B
            # 通过cv格式打开的图片,像素格式为 BGR
            gray5[i, j] = 0.3 * image[i, j][2] + 0.11 * image[i, j][0] + 0.59 * image[i, j][1]
    cv.imshow("weightedGray",gray5)

在这里插入图片描述

转载请注明转自:https://leejason.blog.csdn.net/article/details/106416128

  • 46
    点赞
  • 288
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python OpenCV可以通过以下代码将图像灰度化: ```python import cv2 # 读取图像 img = cv2.imread('image.jpg') # 将图像转换为灰度图像 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像 cv2.imshow('Gray Image', gray_img) cv2.waitKey() cv2.destroyAllWindows() ``` 其中,`cv2.imread()`函数用于读取图像,`cv2.cvtColor()`函数用于将图像转换为灰度图像,`cv2.imshow()`函数用于显示图像,`cv2.waitKey()`函数用于等待按键输入,`cv2.destroyAllWindows()`函数用于关闭所有窗口。 ### 回答2: Python是一种广泛应用于计算机视觉领域的编程语言,而OpenCV则是一个强大且广受欢迎的计算机视觉库,用于处理图像和视频。 在Python中使用OpenCV进行图像灰度化,可以采用cv2.cvtColor()函数来将图像转换为灰度图像。灰度图像是一种只有一种亮度通道的图像,其中每个像素的亮度值表示该像素在RGB颜色空间中的平均亮度。 cv2.cvtColor()函数需输入两个参数,第一个参数为要进行转换的图像,第二个参数是转换类型。常用的转换类型包括: cv2.COLOR_BGR2GRAY:将彩色图像转换为灰度图像 cv2.COLOR_RGB2GRAY:将RGB图像转换为灰度图像 以下是一个示例代码,展示如何使用Python和OpenCV图像进行灰度化: ```python import cv2 # 读取图像 img = cv2.imread('test.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像 cv2.imshow('Gray Image', gray) cv2.waitKey(0) cv2.destroyAllWindows() ``` 通过以上代码,可以将一张名为test.jpg的彩色图像转换为灰度图像,并在窗口中显示。 在图像处理中,灰度化是一个重要的步骤,因为灰度图像只有一个通道,数据量较小,更容易处理。通过Python和OpenCV的结合,我们可以快速方便地将图像转换为灰度图像。 ### 回答3: Python是一种高级编程语言,它的应用非常广泛,其中包括机器学习和计算机视觉领域。在计算机视觉中,OpenCV是一种强大而广受欢迎的工具,它提供了一系列图像处理函数和算法,使得开发者能够方便地操作和处理图像。 在OpenCV中,图像的灰度化操作是一个基本且常用的处理操作,它可以将彩色图像转换为黑白图像,使得图像处理更加简单和高效。在Python中,实现图像灰度化的函数非常简单,可以使用OpenCV库中的cv2.cvtColor()函数,该函数可将彩色图像转换为灰度图像。 下面是Python中使用OpenCV实现图像灰度化的一些代码示例: 1、导入cv2库 import cv2 2、读取彩色图像 img = cv2.imread('test.jpg') 3、调用cvtColor()函数将彩色图像转换为灰度图像 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 将原始图片转换为灰度图后可以得到一个2D数组,其中每个像素点对应一副灰度图像的亮度值,使用OpenCV库中的cv2.imshow()函数可以在窗口中展示图像,使用cv2.waitKey()函数可以等待用户的按键输入,最后使用cv2.destroyAllWindows()函数关闭所有窗口。 img_gray = cv2.imread('test.jpg', 0) #读取灰度图像 cv2.imshow('Gray Image', img_gray) #展示灰度图像 cv2.waitKey(0) #等待键盘输入 cv2.destroyAllWindows() #关闭所有窗口 如上所示,在Python中使用OpenCV来实现图像的灰度化非常简单而便捷,它极大地方便了开发者在图像处理和分析方面的工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值