图像基本处理(灰度化)
项目场景:
今天我们开始最基础的图像处理,将一张图片进行灰度化处理。我们将使用OpenCV来进行图像的处理
基础知识
图片主要包含以下内容:
1.像素,也就是我们通常说的RGB模型,红、绿、蓝组成。
RGB颜色模型是三维直角坐标系下的一个单位正方体!
也就是说,图片中的某个像素点的取值为(x,y,z)。
2.分辨率,也就是图像的解析度,单位英寸内的像素点数
3.灰度,表示图像像素的明暗程度的数值,也就是黑白图像中点的颜色深度。范围一般为0-255。白色为255,黑色为0.
图片灰度化
我们要做的是将图片灰度化,那么首先就要搞清楚,什么是灰度化?
所谓灰度,就是图像没有色彩。举个例子,原本的彩色图片是有RGB三种颜色组成的(也就是每个像素点由三个值),现在给图像灰度化,每个像素点只有一个值(0-255)表示颜色的深度。
大家也可以这样理解:彩色图片,颜色是在一个三维坐标下(也就是RGB模型)确定的,而灰度图的坐标是在一维坐标下确定的,取值范围为0-255.
图片灰度化的方法(也就是颜色由三维表示转一维表示的方法)
灰度化:
二值化:我们在上诉的灰度化中,颜色以经由三维变成了一维的(取值范围0-255),当这个取值只能为0或者1的时候,便是图像二值化。(当然,这两个值不仅限于0和1,也可以是其他的两个值)
代码展示
import numpy as np
import matplotlib.pyplot as plt
import cv2# 灰度化
img = cv2.imread("lenna.png")
h, w = img.shape[:2] # 获取图片的high和wide
img_gray = np.zeros([h, w], img.dtype) # 创建一张和当前图片大小一样的单通道图片
for i in range(h):for j in range(w):m = img[i, j] # 取出当前high和wide中的BGR坐标img_gray[i, j] = int(m[0] * 0.11 + m[1] * 0.59 + m[2] * 0.3) # 将BGR坐标转化为gray坐标并赋值给新图像
print(img_gray[2,1])
# 二值化
img_binary = np.where(img_gray/255 >= 0.5, 1, 0)# 画图
img = plt.imread("lenna.png")
plt.subplot(221)
plt.imshow(img)
plt.title('Color map')plt.subplot(222)
plt.imshow(img_gray, cmap='gray')
plt.title('gray')plt.subplot(223)
plt.imshow(img_binary, cmap='gray')
plt.title('img_binary')
plt.savefig('mytestplt.png')
plt.show()
效果展示:
写在最后:
当然,我们在使用第三方库的时候,这种简单的事情根本不需要我们来做,直接调用第三方库的接口即可,哈哈!
# 灰度化
#img_gray = rgb2gray(img) # 此函数做灰度化,返回的数值范围为0-1.所以在做二值化的时候无需除以255
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 因为imread读进来的是BGR数据,所以这里做BGR转GRAY# 二值化
img_binary = np.where(img_gray/255 >= 0.5, 1, 0)
图像基本处理(灰度化)相关推荐
- 2种图像增强方法:图像点运算和图像灰度化处理
摘要:本文主要讲解图像点运算的灰度化处理,详细介绍常用的灰度化处理方法,并分享了图像颜色空间相互转换,以及三种灰度转换算法的实现. 本文分享自华为云社区<[Python从零到壹] 四十三.图像增 ...
- matlab实现彩色图像灰度化的三种方法
一.概要 将彩色图像转换为灰度图像的过程称为灰度化处理. 对于图像而言,灰度化处理就是使彩色的R,G,B分量值相等的过程. 灰度化处理的方法主要有如下3种: 最大值法:使R,G,B的值等于3值中最大的 ...
- 3 - 图片灰度化与转换为八位灰度图片
参考资料:彩色图像灰度化 图片灰度化与转换为八位灰度图片 1.灰度化公式 2.24 位真彩图灰度化 3.24 位真彩图转换成 8 位灰度图片 1.灰度化公式 彩色图像灰度化的算法公式一般有如下两种:明 ...
- html5图片灰度显示,HTML5 组件Canvas实现图像灰度化
HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的C ...
- opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
平台:win7+opencv2.4.4+vs2008 功能:实现对图像的读入.灰度化.归一化和向量化. 代码: //这里的头文件都是vs2008的,与vc6.0有多不同 #include #inclu ...
- Python-OpenCV 处理图像(七):图像灰度化处理
为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像. 0x00. 灰度图 灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑 ...
- Python-OpenCV 处理图像(六)(七)(八):对象识别 图像灰度化处理 图像二值化处理
为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像. 0x00. 灰度图 灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑 ...
- [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- c#图像灰度化、灰度反转、二值化
图像灰度化: 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*2 ...
最新文章
- struts2结果类型
- zabbix的日常监控-自动发现端口并监测(服务器开启的所有端口或监控指定端口)(十三)...
- 汽车电子嵌入式技术篇(二) -autosar中的嵌入式系统函数的调用
- 深度学习(五十七)tensorflow andorid yolo物体检测测试
- 高并发消息队列常用通知机制
- mysql查询报错2014_MySQL错误2014的原因其他未缓冲的查询处于活动状态时无法执行查询...
- OMP算法的物理意义表示
- unity生涯的开始——太空飞船小游戏制作
- s3cmd安装配置及基础命令
- 商业图表案例9.2-麦吉尔大学博士生录取的严格把控
- 中国货币政策的动态有效性研究--基于 TVP-SV-FAVAR 模型的实证分析
- 物理机与虚拟机互传文件
- 从键盘输入一个不多于3位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字
- [笔记]|[FPGA]|[寄存器]|[模拟信号数字信号]《FPGA学习之道》学习笔记(1)
- 在Ubuntu 16.04中安装FBReader阅读器,阅读mobi文件
- MathType公式编辑文本复制粘贴选项
- 米思齐学习例程(八):声控灯
- java 生成二维码和去除白边的方法
- 如何完整备份苹果/Mac?两种方式介绍给大家
- 自我绊倒的面试——顾建荣(摘自《微软360度》