如何使用 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()

结果图:

发现这次的效果还是可以的。

原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10128001.html

时间: 2024-08-06 11:55:19

如何使用 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()  #进行单张图片的读取,ret的值为True或者Flase, frame表示读入的图片 4.cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  #表示将图片转换为灰度图 代码: import cv2 vc = cv2.VideoCapture('test.mp4')

【python】RGB图片到灰度图的转换

在做立体匹配求深度图的时候遇到这个问题,用惯了matlab的rgb2gray,倒是不熟悉python的实现,在网上找到了相关方案,记下来已作备用 RGB到灰度图转换公式: Y' = 0.299 R + 0.587 G + 0.114 B 自定义转换函数: 1 import numpy as np 2 3 def rgb2gray(rgb): 4 return np.dot(rgb[...,:3], [0.299, 0.587, 0.144]) 调用: 1 grayPic = rgb2gray(r

mupdf实现常用图片转换为灰度图pnm

我要实现的工作是使用mupdf库转换pdf.jpeg.tif等文件为灰度图,转换完成的灰度图存放到内存中,而不是存为文件,在读取到内存中,主要是嵌入式系统中使用.下面是example.c,我加了我理解的注释,以及自己修改的地方.example.c全文 #include <mupdf/fitz.h> void render(char *filename, int pagenumber, int zoom, int rotation) { // Create a context to hold t

C# (灰度)加权平均法将图片转换为灰度图

private Bitmap ToG(string file) { using (Bitmap o = new Bitmap(file)) { Bitmap g = new Bitmap(o.Width, o.Height); for (int i = 0; i < o.Width; i++) { for (int j = 0; j < o.Height; j++) { Color c = o.GetPixel(i, j); //灰度加权平均法公式 int rgb = (int)(c.R *

c语言实现BMP图像转换为灰度图

当初是自己要装X,非要用c来写信息隐藏作业,装了X,就得付出实践.查了好久资料,到期末才把作业交了,这里总结一下. 这道题是将真彩图转换为灰度图. 关于BMP文件结构,这是困扰了我好久的问题,上网查了很久图片的知识才弄明白 BMP文件包括以下几部分(具体结构在程序中说明): 位图文件头 位图信息头 调色板 位图数据 结构体内存对齐原则 每个成员存储的起始位置要从该成员大小的整数倍开始 成员是结构体时相对与起始偏移是其内部最大元素大小的整数倍 结构体的总大小是其内部最大成员的整数倍 因此在定义头结

从视频文件中读入数据--&gt;将数据转换为灰度图--&gt;对图像做candy边缘检测

//从视频文件中读入数据-->将数据转换为灰度图-->对图像做candy边缘检测 //作者:sandy //时间:2015-10-10 #include <cv.h> #include <highgui.h> int main(int argc, char *argv[]){ //预备工作 CvCapture* capture=cvCreateFileCapture("E:\\Videos\\xx.avi");//让capture变量指向视频文件 i

RGB图像转为灰度图

最后结论: Grey = (R*38 + G*75 + B*15)>> 7 代码 #include <cv.h> #include <highgui.h> using namespace cv; int main(){ Mat src= imread("C:\\Users\\Poplar\\Pictures\\ff.jpg"); Matgrey(src.rows, src.cols, CV_8UC1, Scalar(0)); for (inty =

Qt 中彩色图像转换为灰度图

最近在做几个图像处理相关的项目.里面有一个操作就是需要先将彩色图像转换为灰度图像.QImage 有一个convertToFormat方法.最开始一直用这个函数来实现.但是今天仔细看了看,发现这个函数转换出的灰度图与原始图像的亮度似乎是有区别的.比如说下面这副图像: 用下面这三行代码转换: QImage image2 = image.convertToFormat(QImage::Format_Indexed8); image2.setColorCount(256); for(int i = 0;

IOS 将图片转换为圆角图

UIImage+wiRoundedRectImage.h #import <UIKit/UIKit.h> @interface UIImage (wiRoundedRectImage) + (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r; @end UIImage+wiRoundedRectImage.m #import "UIImage+wiRoundedRectIma