如何使用 python3 将RGB 图片转换为 灰度图
首先,介绍第一种方法, 使用 PIL 库, PIL库是一种python语言常用的一个图形处理库。
关于 PIL 库的安装本文就不介绍了。
from PIL import Image
I = Image.open('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg')
I.show()
L = I.convert('L')
L.show()
L.save('C:\\Users\\Administrator\\Desktop\\照片\\timg2.jpg')
timg.jpg 文件:

灰度图:

第二种, 便是使用 numpy库 来编写自己的转化函数:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
def rgb2gray(rgb):
r, g, b=rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2]
gray=0.2989*r + 0.5870*g + 0.1140*b
return gray
img=mpimg.imread('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg')
plt.imshow(img)
plt.show()
img2=rgb2gray(img)
plt.imshow(img2)
plt.show()
结果展示:


采用第二种方法展示的结果图十分的怪异,应该是matplotlib.plot 展示一个通道图片时候需要额外设置的缘故吧,下面找到了一个修正的代码,如下:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np def rgb2gray(rgb):
return np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140]) img=mpimg.imread('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg') plt.imshow(img)
plt.show() img2=rgb2gray(img) plt.imshow(img2, cmap=plt.get_cmap('gray'))
plt.show()
结果图:


发现这次的效果还是可以的。
如何使用 python3 将RGB 图片转换为 灰度图的更多相关文章
- 机器学习进阶-图像基本处理-视频的读取与处理  1.cv2.VideoCapture(视频的载入)  2.vc.isOpened(载入的视频是否可以打开) 3.vc.read(视频中一张图片的读取) 4.cv2.cvtColor(将图片转换为灰度图)
		1.vc = cv2.VideoCapture('test.mp4') #进行视频的载入 2.vc.isOpened() # 判断载入的视频是否可以打开 3.ret, frame = vc.read( ... 
- 【python】RGB图片到灰度图的转换
		在做立体匹配求深度图的时候遇到这个问题,用惯了matlab的rgb2gray,倒是不熟悉python的实现,在网上找到了相关方案,记下来已作备用 RGB到灰度图转换公式: Y' = 0.299 R + ... 
- Android 将ARGB图片转换为灰度图
		思路如下: 1.读取or照相,得到一张ARGB图片. 2.转化为bitmap类,并对其数据做如下操作: A通道保持不变,然后逐像素计算:X = 0.3×R+0.59×G+0.11×B,并使这个像素的值 ... 
- C# (灰度)加权平均法将图片转换为灰度图
		private Bitmap ToG(string file) { using (Bitmap o = new Bitmap(file)) { Bitmap g = new Bitmap(o.Widt ... 
- [Xcode 实际操作]六、媒体与动画-(2)使用图形上下文转换图片为灰度图
		目录:[Swift]Xcode实际操作 本文将演示如何将图片转换为灰度图. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit class V ... 
- c语言实现BMP图像转换为灰度图
		当初是自己要装X,非要用c来写信息隐藏作业,装了X,就得付出实践.查了好久资料,到期末才把作业交了,这里总结一下. 这道题是将真彩图转换为灰度图. 关于BMP文件结构,这是困扰了我好久的问题,上网查了 ... 
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
		//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ... 
- Android-将RGB彩色图转换为灰度图
		package com.example.yanlei.wifi; import android.graphics.Bitmap; import android.graphics.BitmapFacto ... 
- Qt 中彩色图像转换为灰度图
		近期在做几个图像处理相关的项目.里面有一个操作就是须要先将彩色图像转换为灰度图像. QImage 有一个convertToFormat方法.最開始一直用这个函数来实现. 可是今天细致看了看,发现这个函 ... 
随机推荐
- go 语言字典遍历
			package main import "fmt" func main() { var countryCapitalMap map[string]string /*创建集合 */ ... 
- python 加密与解密
			加密算法分类 对称加密算法: 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥 发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥. 相对于非对称加密,对称加密具有 ... 
- python 元组查找元素返回索引
			#create a tuple tuplex = tuple("index tuple") print(tuplex) #get index of the first item w ... 
- 大数据学习:storm流式计算
			Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: 1.Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 2.由于Storm的处理组件都是分布式的, ... 
- 阿里官方Java代码规范标准
			阿里官方Java代码规范标准<阿里巴巴Java开发手册 终极版 v1.3.0>下载 https://www.cnblogs.com/han-1034683568/p/7680354.htm ... 
- [.NET开发] C#编程调用Cards.dll实现图形化发牌功能示例
			本文实例讲述了C#编程调用Cards.dll实现图形化发牌功能.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; usi ... 
- inputsimulator  - Windows Input Simulator
			窗体输入模拟器提供一个基于 win32 SendInput 方法的 模拟键盘鼠标输入的.net 接口.windows 输入模拟器可用于 WPF.windows 窗体和控制台应用程序, 实现模拟任意按 ... 
- Confluence 6 LDAP 服务器配置
			名字(Name) 输入一个有意义的 LDAP 服务器名字,会让你更好的识别你的目录服务器.例如: Example Company Staff Directory Example Company Cor ... 
- AI学习路径
- 带分数(dfs,next_permutation)
			问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ... 
