OpenCV图像灰度化的六种方法

article/2025/8/26 22:55:11

OpenCV图像灰度化的六种方法

  • 1.环境
  • 2.部分api及其参数解析
  • 3.灰度化方法实例及效果
    • 3.1 读取时灰度化处理
    • 3.2 调用cvtColor灰度化处理
    • 3.3 平均值法:
    • 3.4 最大值法
    • 3.5 分量法
    • 3.6 加权平均法

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])) / 3cv.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列的二维listfor 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格式打开的图片,像素格式为 BGRgray5[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


http://chatgpt.dhexx.cn/article/jFAZWGOf.shtml

相关文章

图像的灰度化原理和实现

一、图像的灰度化处理的基本原理 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范…

图像处理:图像灰度化

灰度图像上每个像素的颜色值又称为灰度,指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0。所谓灰度值是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值…

图像灰度化的三种方法(matlab、C++、Python实现)

灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程。灰度值大的像素点比较亮(像素值最大为25…

图像灰度化的三种常见方法

ⅠWhat 首先是baike给出的官方灰度化定义: 灰度化,在RGB模型中,如果RGB时,则彩色表示一种灰度颜色,其中RGB的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值…

图像基本处理(灰度化)

项目场景: 今天我们开始最基础的图像处理,将一张图片进行灰度化处理。我们将使用OpenCV来进行图像的处理 基础知识 图片主要包含以下内容: 1.像素,也就是我们通常说的RGB模型,红、绿、蓝组成。 RGB颜色模型是三维直角…

图像灰度化处理

文章目录 1. 图像灰度化2. 图像灰度化处理方法2.1 最大值法2.2 平均值法2.3 加权平均法 3. 图像灰度化处理方法的Python实现3.1 最大值法3.2 平均值法3.3 加权平均法3.4 最大值法、平均值法和加权平均法的比较3.5 opencv-python中灰度处理方法的应用 4. 源码仓库地址 1. 图像灰…

excel转换linux时间戳,在Excel中转换时间戳(timeStamp)

TEXT((A2/10008*3600)/8640070*36519,"yyyy-mm-dd hh:mm:ss.000") ((B2-70*365-19)*86400-8*3600)*1000 什么是时间戳? Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式。 定义为从…

java linux 时间戳转时间_Java时间和时间戳的相互转换

Java时间和时间戳的相互转换 时间转换为时间戳: /* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException{ String res; SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date …

linux时间转excel,linux时间戳转换【操作模式】

虽然电脑已经很普遍了,但是一些年长的人对电脑的操作不是很熟悉,比如在使用win7系统时一旦遇到linux时间戳转换 时就懵了,对于linux时间戳转换 处理起来相对来说较简单,按照我们的步骤处理linux时间戳转换 很容易上手,…

excel linux时间戳转换成日期,Excel将Unix时间戳转换为日期

Excel默认不支持Unix格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成Excel格式的时间:(A18*3600)/8640070*36519 其中A1为时间戳的单元格,8*3600中的8为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下…

Linux C/C++实现时间戳转换工具

在大多数 UNIX 系统中,当前时间存储为自特定时刻以来经过的时间以简化,将时间保持为长整数。所有 UNIX 系统普遍接受的时刻是 1970 年 1 月 1 日凌晨 12:00:00。 这称为 UNIX 时间戳,并被所有现代 UNIX/Linux 系统识别。 Linux 时间戳date命…

linux系统date命令(时间戳与日期相互转换)

引言 在做数据分析时经常会用到时间,但有时系统或应用时间显示的格式不统一,这就需要将格式转换为一致,才能对比数据进一步做分析,以前常用网上在线时间戳转换工具,但每次都在先打开浏览器进行搜索在线时间戳转换工具…

Linux下时间戳格式和标准时间格式的转换

大家都知道linux文件系统中的每个文件都有三种时间戳: 访问时间(atime——access time):就是上次访问这个文件的时间。 改变时间(ctime——change time):就是文件的inode改变的时间(…

Python——保存图片到本地

举个例子,比如我想保存github网,浏览器头有个图标. resp requests.get("https://github.com/favicon.ico") with open("C:\\Python37\\911.jpg",wb)as jpg: jpg.write(r.content)

python读取、保存图片的方法

matplotlib 输入:列表或二维矩阵 (1)例如列表: #codingutf-8 from matplotlib import pyplot as plt X [[1,2],[3,4],[5,6]] plt.imshow(X) #AxesImage(80,52.8;496x369.6) plt.colorbar() plt.show() #导入AxesImage结果…

python爬取网页图片教程之python爬虫获取图片保存图片

怎么用python爬取网页图片,今天我们以一个实例网页()来爬取页面中的所有图片。 1.获取图片的URL ** ** 首先我们要想获取图片的URL,就需要将该网页中的图片URL提取你,那么我们首先获取该网页的整个数据 然后我们通过…

python爬虫保存图片和文件

看了一篇博客,是这么保存图片的: 照做: src "https://i0.hdslb.com/bfs/sycp/creative_img/201912/01b2f081d58e49c708c1d32b7b8c20ed.jpg" r requests.get(src) with open("C://Users//yg//Desktop//bbb.jpg", "…

在Python中如何保存图像

在Python中如何保存图像,如何将数组保存为图像 主要是看了TensorFlow中第一部分中看到的,查了查资料总结下如何将数组保存为图像 原程序如下 import scipy.misc import os #from PIL import Image #把原始图片保存至MNIST_data/raw/下 save_dir"M…

Python获取图片保存对应的文件夹

首先创建的文件夹,先定义一个创建文件夹的函数: def makdir(path):try:isExists os.path.exists(path)#判断是否存在文件夹if not isExists:#不存在创建os.makedirs(path)print(path文件夹创建成功!)else:print(path文件夹已存在&#xff0…

【python学习】如何将所绘制的图(单张多张)保存到文件夹,并用绘制实时时间命名图片

python图片保存到文件夹 基本存储(plt.savefig())创建文件夹并存储图片(if结构OS模块)批量绘制图片批量存储(for循环)图片/文件夹命名与所运行时间关联(datatime模块) 最近一直在做…