图像处理的第一步操作基本都是进行灰度化

在进行图片识别的过程中,我们需要将视频中每一帧图片取出并且转化为灰度图片,现在大部分的彩色图像都是采用RGB颜色模式,处理图像的时候,要分别对RGB三种分量进行处理,但实际上单纯RGB图像并不能反映图像的形态特征,只是从光学的原理上进行颜色的调配,机器并不能够通过人眼的角度来迅速智慧的识别物体的框架、边角等信息,机器在进行计算的时候,如果是包含色彩的图片,特征量,计算量会成指数倍数增加。将图片转化为灰度图片,能使计算范围降低、提升计算效率。灰度就是RGB色彩三个分量全部相等,即转化为灰度图片的每一个像素点存在0-255种组合色彩,而彩色图像中的每个像素颜色由R、G、B三个分量来决定,而每个分量的取值范围都在0-255之间,这样对计算机来说,彩色图像的一个像素点就会有256*256*256=16777216种颜色的变化范围,由此,RGB是适用于人眼观看的视觉成像,但并不适用于机器分析。

同时,我们可以从上图清晰看出,灰度化图片≠黑白图片,黑白图片是一种“两色”图片,即非黑即白,而灰度化图片的像素介于黑与白之间。

常见灰度化处理算法:

  1. 分量法
  2. Gamma校正灰度化
  3. 最大值法
  4. 加权平均法

加权平均法公式

在日常生活中,我们通常使用加权平均法进行灰度化处理。

算法实现:

import cv2
import numpy as npimg = cv2.imread('Resources/car20.jpg')
h, w = img.shape[0:2]
print(h,w)
gray = np.zeros((h, w), dtype=img.dtype)for i in range(h):for j in range(w):gray[i, j] = (0.3*int(img[i, j, 0]) + 0.59*int(img[i, j, 1]) + 0.11*int(img[i, j, 2]))cv2.imshow('Gray',gray)
cv2.imshow('Result',img)
cv2.waitKey(0)

在OpenCV中,已经有函数

cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 为我们实现灰度化处理
import cv2
import numpy as npimg = cv2.imread('Resources/car20.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)cv2.imshow('Gray',gray)
cv2.imshow('Result',img)
cv2.waitKey(0)

函数cvtColor含有多种图片转换方式 OpenCV: Color Space Conversions

上面自我实现的灰度化图片与OpenCV自带的cvtColor函数输出的结果一致:

左图为原始图片,右图为灰度化后的图片

OpenCV+Python学习笔记 : 图像灰度化处理相关推荐

  1. OpenCV+CUDA学习2---图像灰度化

    对于图像灰度化,使用了opencv-cuda实现与完全基于cuda实现,本程序中参考了网上多个教程,主要记录和学习的过程. 目录 1.opencv+cuda实现图像灰度化 2.CUDA实现图像灰度化 ...

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

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

  3. python图像处理之图像灰度化

    灰度化 预备知识 在了解图像处理的基本操作之前,我们需要知道关于图像的一些基本知识.我们这里所说的图像处理实质上是数字图像处理,因为计算机只能对数字信号进行处理,因此存储在计算机中的图像都是实际图像经 ...

  4. openCV Python学习笔记(二)画几何

    此处要花几何图形,我们需要用到如下几个函数: cv2.line 画线函数 cv2.circle 画圆函数 cv2.ellipse 画椭圆 cv2.rectangle 画矩形 1.画线 img=cv2. ...

  5. OpenCV Python学习笔记(5)—— 边缘保留滤波(EPF)

    1 边缘保留滤波 高斯双边 均值迁移 2 测试 import cv2 as cv import numpy as npdef bi_demo(image):dst = cv.bilateralFilt ...

  6. OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并

    OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...

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

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

  8. OpenCV+MFC学习笔记(二):OpenCV二值化处理图像并在Picture Control中并自适应显示

    在前面我们已经完成通过OpenCV读取图片在Picture Control中并自适应显示.下面我们很自然的需要对读取的图片进行处理,处理完之后很自然的想到要看看效果.所以今天的笔记是通过OpenCV灰 ...

  9. OpenCV之Python学习笔记

    RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...

  10. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

最新文章

  1. 人生曲线——我们不拥有将来,只拥有此刻
  2. wxWidgets:wxWizard类用法
  3. C++程序员必读的经典著作
  4. 2021 re:Invent ,我们到底该关注哪些发布?
  5. 猫眼(门镜)中的光学
  6. Citrix XenApp工作原理
  7. 开发工具篇 程序员计算器
  8. MUI全国城市区县级联json转换sql建表
  9. Android开启桌面模式,Android Q自带桌面模式:支持大宽屏幕
  10. sqlserver 提示“用户sa 登录失败 18456”问题解决过程
  11. 视频图像的I帧、P帧、B帧详解
  12. Leetcode刷题笔记 35.搜索插入位置(详细说明二分查找)
  13. 为什么使用阿里普惠体没效果
  14. android 12.0 wifi开关控制功能实现
  15. unity 关于搜索
  16. HTML怎么设置自动滚动的图片,转:HTML中让图片滚动的marquee标签的使用方法
  17. 记阿里笔试2020.3.23惨痛经历
  18. magisk安装与配置
  19. php 照片上加水印字体——类库封装
  20. 求向量a在向量b上的投影

热门文章

  1. 优惠券玩法解说 JAVA优惠券商城系统开发
  2. 【大数据分析】Spark介绍
  3. C51与MDK共存 Keil5安装教程 WIN10 亲测可用
  4. 浙大PAT 1102
  5. SSM框架整合思想及步骤
  6. 视频类App原型制作分享-VUE
  7. (亲测有效)windows10和11如何卸载Microsoft Edge浏览器
  8. shiro简单配置教程
  9. 分布式集群中网络分区问题
  10. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)