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

OpenCV图像灰度化的六种方法相关推荐

  1. [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  2. 2种图像增强方法:图像点运算和图像灰度化处理

    摘要:本文主要讲解图像点运算的灰度化处理,详细介绍常用的灰度化处理方法,并分享了图像颜色空间相互转换,以及三种灰度转换算法的实现. 本文分享自华为云社区<[Python从零到壹] 四十三.图像增 ...

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

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

  4. 图像灰度化的三种常见方法源码

    图像灰度化是图像处理很基础的一部分,在这里给出图像灰度化的三种常见方法的M源码,以供大家参考~ 平均值法,最大值法,加权平均值法 function f=MyGrayProcessing(Img) [m ...

  5. Opencv读取文件夹连续图片,RGB分量显示,图像灰度化

    1.读取文件夹连续图片 刚开始学习图像处理,开始只能一次读入一张图片,今天从网上查了一些资料,自己写了一个可以连续读取多张图片函数. char filename[100];char windownam ...

  6. 图像灰度化的常用三种方式及其实现

    第一次写blog,还请各位同仁多多指正,万分感谢! 图像灰度化的常用三种方法有: 1.分量法(本文以B通道为例):将彩×××像的R.G.B三分量的亮度之一作为灰度图像灰度值 Gray=B or Gra ...

  7. c#图像灰度化、灰度反转、二值化

    图像灰度化: 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*2 ...

  8. MATLAB:虹膜识别的图像灰度化处理,直方图均衡化

    (1)图像灰度化处理: 读取一张图片之后,进行灰度化处理,然后对其进行直方图均值化. clear;close all %读取原图地址 RGB= imread('D:\img\1.jpg'); %图像灰 ...

  9. CUDA精进之路(三):图像处理——图像灰度化、灰度直方图统计

    引言 在大部分的图像处理程序中,其中必不可少的一步就是对传入的彩图进行灰度处理,将三个通道的RGB图片转化为单通道的Gray图,而对于灰度图进行直方图统计同样是观察检测图像特征的常用方法.在OpenC ...

  10. 【python图像处理】图像灰度化处理、图像灰度线性变换、图像灰度非线性变换

    一.图像灰度化处理 1.最大值灰度处理方法 2.平均灰度处理方法 3.加权平均灰度处理方法 二.图像灰度线性变换 1.图像灰度上移变换 2.图像对比度增强变换 3.图像对比度减弱变换 4.图像灰度反色 ...

最新文章

  1. Codeforces Round #700 (Div. 2) A ~ E ,6题全,超高质量良心题解【每日亿题】2021/2/8
  2. Bzoj3550 [ONTAK2010]Vacation
  3. 小知识点——DataTable把满足条件的一行放在第一行
  4. Machine Learning week 7 quiz: Support Vector Machines
  5. laydate.render报错:日期格式不合法
  6. SpringBoot 配置Tomcat运行
  7. [转]详解HTTP包
  8. SSHnbsp;整合-nbsp;6nbsp;-nbsp;service_serviceImp…
  9. mysql fixed数据类型_fixed数据类型
  10. jeecg3.5的一个bug
  11. python标准库:collections和heapq模块
  12. 妇产科学习题---有答案
  13. linux服务器网卡查看,Linux操作系统下如何查看网卡当前版本
  14. Ubuntu Qt 无法覆盖文件 错误解决方法
  15. win10小技巧(初)
  16. python抓取豆瓣电影
  17. Android 系统简单介绍
  18. DNS 服务器 清除缓存
  19. 学院来信371:建立“可复制”+“可迭代”的投资系统
  20. ceph块存储的创建

热门文章

  1. nmap 端口扫描基本使用方法
  2. DVP和MIPI接口的简单区别
  3. CH565 DVP sensor选型、性能评估
  4. three.js加载OBJ格式模型(vue中使用three.js51)
  5. 订阅服务器无法显示,订阅疑难解答
  6. Hashmap实现原理及hash冲突(碰撞)解决方法
  7. python最优分箱计算iv值_基于sklearn决策树的最优分箱与IV值计算-Python实现
  8. 章草、今草、狂草是草书的三种书写表现方式,你更喜欢哪一种?
  9. Log4j有哪几种日志级别呢?
  10. CAD .Net 开发-快速入门