python实现RGB转化为灰度图像
问题:
我正尝试使用matplotlib
读取RGB图像并将其转换为灰度。
在matlab中,我使用这个:
1
|
img = rgb2gray(imread( 'image.png' )); |
在matplotlib tutorial中他们没有覆盖它。他们只是在图像中阅读
1
2
|
import matplotlib.image as mpimg img = mpimg.imread( 'image.png' ) |
然后他们切片数组,但是这不是从我所了解的将RGB转换为灰度。
1
|
lum_img = img[:,:, 0 ] |
编辑:
我发现很难相信numpy或matplotlib没有内置函数来从rgb转换为灰色。这不是图像处理中的常见操作吗?
我写了一个非常简单的函数,它可以在5分钟内使用imread
导入的图像。这是非常低效的,但这就是为什么我希望内置专业实施。
塞巴斯蒂安改善了我的功能,但我仍然希望找到内置的一个。
matlab的(NTSC / PAL)实现:
1
2
3
4
5
6
7
8
|
import numpy as np def rgb2gray(rgb): r, g, b = rgb[:,:, 0 ], rgb[:,:, 1 ], rgb[:,:, 2 ] gray = 0.2989 * r + 0.5870 * g + 0.1140 * b return gray |
回答:
如何使用PIL
1
2
3
|
from PIL import Image img = Image. open ( 'image.png' ).convert( 'LA' ) img.save( 'greyscale.png' ) |
使用matplotlib和the formula
1
|
Y' = 0.299 R + 0.587 G + 0.114 B |
你可以这样做:
1
2
3
4
5
6
7
8
9
10
11
|
import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mpimg def rgb2gray(rgb): return np.dot(rgb[...,: 3 ], [ 0.299 , 0.587 , 0.114 ]) img = mpimg.imread( 'image.png' ) gray = rgb2gray(img) plt.imshow(gray, cmap = plt.get_cmap( 'gray' )) plt.show() |
python实现RGB转化为灰度图像的更多相关文章
- < python PIL - 批量图像处理 - RGB图像生成灰度图像 >
< python PIL - 批量图像处理 - RGB图像生成灰度图像 > 直接用python自带的PIL图像库,将一个文件夹下所有jpg/png的RGB图像转换成灰度/黑白图像 from ...
- Python实现doc转化pdf
Python实现doc转化pdf python源码实现doc转化pdf #-*- coding:utf-8 -*- # doc2pdf.py: python script to convert doc ...
- Python将阿拉伯数字转化为中文大写-乾颐堂
利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字符 ...
- OpenCV 学习笔记(9)RGB转换成灰度图像的一个常用公式Gray = R*0.299 + G*0.587 + B*0.114
https://blog.csdn.net/fly_wt/article/details/86432886 RGB转换成灰度图像的一个常用公式是:Gray = R*0.299 + G*0.587 + ...
- 【python】RGB图片到灰度图的转换
在做立体匹配求深度图的时候遇到这个问题,用惯了matlab的rgb2gray,倒是不熟悉python的实现,在网上找到了相关方案,记下来已作备用 RGB到灰度图转换公式: Y' = 0.299 R + ...
- python进制转化函数,10进制字符串互转,16进制字符串互转
来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...
- 如何用python将一个时间序列转化成有监督学习
机器学习可以被用于时间序列预测. 在机器学习能使用之前,时间序列预测需要被重新转化成有监督学习.将一个序列组合成成对的输入输出序列. 在这篇教程中,你会发现如何通过使用机器学习算法将单变量和多变量的时 ...
- python将文本转化成语音并播放
一.问题 在学习的过程中,我们会涉及到将文本信息,转化成语音的过程,比如:我爬取了一个小说的网站,我要将里面的内容进行语音处理.目前能够进行语音的方法还是很多,比如win32com,百度ai. 二.解 ...
- OpenCV C++如何使RGB图像变为灰度图像
http://m.blog.csdn.net/blog/u014395105/41308979 最近在研究如何用C++来处理图像,而不使用封装好的OpenCV代码,这样能够更好的了解OpenCV的内部 ...
随机推荐
- 检测含有挖矿脚本的WiFi热点——果然是天下没有免费的午餐
见:http://www.freebuf.com/articles/web/161010.html 本质上是在开放wifi热点,自己搭建挖掘的网页,让接入的人访问该网页. 802.11无线协议本身特点 ...
- golang文件读写三种方式——bufio,ioutil和os.create
package main import ( "bufio" "fmt" "io/ioutil" "os" ) func ...
- 通过Ajax和SpringBoot交互的示例
转自:https://blog.csdn.net/oppo5630/article/details/52093898/
- angular js 正序倒叙
<!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- ArrayList<HashMap<String,Object>>集锦
1. Android中如何从一个Activity中ArrayList<HashMap<String,Object>>传递到另一个activity? eg: ...
- Eclipse的菜单简介
在Eclipse工作台的上方提供了菜单栏,该菜单栏包含了实现Eclipse各项功能的命令,并且与编辑器相关,即菜单栏中的菜单项与当前编辑器内打开的文件是关联的.例如,编辑器内没有打开任何文件,那么,将 ...
- 高通处理器手机 解锁Bootloader 教程
目前很多手机都需要解锁Bootloader之后才能进行刷机操作 本篇教程教你如何傻瓜式解锁Bootloader 首先需要在设置-关于手机 找到版本号(个别手机可能是内核版本号,甚至其他) 然后 快 ...
- ★Java语法(一)——————————标识符
1.定义:用来标识类名.变量名.方法名.数组名.文件名的有效字符序列: 2.命名规则:a 由字母.数字._(下划线)和$(美元符号)组成 b 数字不能作为第一个字符 c 不能是Java中的关键字和保留 ...
- FormCollection获取请求数据
public ActionResult Add(FormCollection fm) //通过FormCollection 对象获取表单数据 { string message = "&quo ...
- sturts2 回顾
第一个简单的struts2例子: 1. 创建一个web project 2. 导入jar包 具体jar包在struts 的例子中的lib文件夹中copy