使用Python和PIL将RGB转换为三通道灰度图

将彩色图像转换为多通道的灰度图意味着保持图像数据的形状不变,但将每个像素的彩色表示转换为灰度值。通常灰度图像是单通道的,但如果想保持原图的三通道结构,可以用相同的灰度值填充每个通道。

彩色图像通常以RGB(红、绿、蓝)格式存储,而将RGB转换为灰度值的一个常见方法是使用线性加权方法,这种方法考虑人眼对不同颜色的敏感度。一个常用的公式是:

灰度 = 0.2989 * R + 0.5870 * G + 0.1140 * B

使用这个公式,然后将计算出的灰度值复制到三个通道,以保持图像的多通道结构。

python代码:

from PIL import Image
import numpy as npdef convert_to_multichannel_grayscale(image_path):# 加载图像img = Image.open(image_path)# 将图像转换为numpy数组img_arr = np.array(img)# 计算灰度值,使用了线性加权的方法gray = 0.2989 * img_arr[:, :, 0] + 0.5870 * img_arr[:, :, 1] + 0.1140 * img_arr[:, :, 2]# 将灰度值扩展到三个通道gray_multichannel = np.stack((gray,) * 3, axis=-1)# 将numpy数组转换回PIL图像gray_img = Image.fromarray(np.uint8(gray_multichannel))# 返回或显示图像return gray_img# 使用函数并显示结果
image_path = '图像文件路径.jpg'
gray_image = convert_to_multichannel_grayscale(image_path)
gray_image.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySql实战--深入浅出索引(下)

在开始这篇文章之前,我们先来看一下这个问题: 在下面这个表T中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行? 下面是这个表的初始化语句。 图1 InnoDB的索…

Ubuntu下搭建UEFI下PXE服务端(详细)总结

目录 一、简介二、HTTP服务端搭建三、DHCP服务端搭建四、TFTP服务端搭建五、重启所有服务、关闭防火墙六、其他相关链接1、Windows下EDK2快速搭建过程总结附软件包地址2、PXE安装Linux系统原理详解3、Ubuntu系统设置常见问题处理详细总结4、UEFI下命令参数详解快速掌握 一、简介…

【IEEE】Multimodal Machine Learning: A Survey and Taxonomy

不废话,先上思维导图,哈哈哈! 论文题目Machine Learning: A Survey and Taxonomy作者Tadas Baltrusaitis , Chaitanya Ahuja , and Louis-Philippe Morency状态已读完会议或者期刊名称IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE IN…

【创建进程】fork函数与写时拷贝

文章目录 fork函数fork如何返回两个值&#xff08;fork的工作原理&#xff09;如何解释父子进程相互输出printf 写时拷贝 fork函数 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 fork函…

Linux - 应用层HTTPS、传输层TCP/IP模型中典型协议解析

目录 应用层&#xff1a;自定制协议实例 HTTP协议首行头部空行正文http服务器的搭建 HTTPS协议 传输层UDP协议TCP协议 应用层&#xff1a; 应用层负责应用程序之间的沟通—程序员自己定义数据的组织格式 应用层协议&#xff1a;如何将多个数据对象组织成为一个二进制数据串进行…

ES集群部署指引

文章目录 引言I 清除last_run_metadata_path数据。II 配置IP2.1 CentOS系统的IP参数2.2 shell脚本-静态网络配置III 公司工作电脑的IP多号段配置3.1 Mac电脑3.2 windows系统see alsomac Rootlees 内核保护措施引言 申请两台Linux机器,存储1年的航迹数据,需要4T的存储空间。 E…

在Linux 中,如何配置网桥?如何配置虚拟网络

在Linux中配置网桥和虚拟网络主要涉及到编辑网络配置文件以及使用特定的命令。以下是一些详细的步骤讲解&#xff1a; 一、配置网桥 编辑网络配置文件 打开终端&#xff0c;使用文本编辑器&#xff08;如vi或nano&#xff09;编辑网络配置文件。对于eth0网络接口&#xff0c…

鸿蒙ArkTS语言快速入门-TS(五)

相关文章快速入口&#xff1a;鸿蒙ArkTS语言快速入门-TS&#xff08;四&#xff09; TS入门学习第五篇 TS入门学习第五篇模块导出模块 exports导入模块 imports 外部模块命名空间 TS入门学习第五篇 模块 模块在其自身的作用域里执行&#xff0c;而不是在全局作用域里&#x…

【算法刷题 | 二叉树 03】3.22 二叉树的层序遍历02(5题:在每个树行中找最大值,填充每个节点的下一个右侧节点指针,二叉树的最大深度,最小深度)

文章目录 5.6 515_在每个树行中找最大值5.6.1问题5.6.2解法&#xff1a;层序遍历 5.7 116_填充每个节点的下一个右侧节点指针5.7.1问题5.7.2解法&#xff1a;层序遍历 5.8 116_填充每个节点的下一个右侧节点指针||5.8.1问题5.8.2解法&#xff1a;层序遍历 5.9 104_二叉树的最大…

postgres数据库中的几种常用的几何空间运算

1、线/面几何数据生成点数据 select st_pointonsurface(geom) from table#根据面或者线生成中心点 2、使用row_to_json()方法可以构建json对象 3、根据面集合数据生成轮廓边界面数据 SELECT ST_ExteriorRing((ST_Dump(geom)).geom) FROM my_table 4、判断点是否在自定义的面…

Transformer的前世今生 day02(神经网络语言模型、词向量)

神经网络语言模型 使用神经网络的方法&#xff0c;去完成语言模型的两个问题&#xff0c;下图为两层感知机的神经网络语言模型&#xff1a; 假设词典V内有五个词&#xff1a;“判断”、“这个”、“词”、“的”、“词性”&#xff0c;且要输出P(w_next | “判断”、“这个”、…

揭秘最热门AI写作软件,看看有哪些值得推荐的AI写作神器

在快节奏的现代生活中&#xff0c;我们常常面临各种压力&#xff0c;例如工作、学习等。因此&#xff0c;一款能够提高写作效率的工具变得尤为重要。那么&#xff0c;有没有什么AI写作软件是比较好用的呢&#xff1f;下面小编给大家推荐几款热门的写作软件。 一.爱制作AI写作 …

什么是分布式

一个系统 各组件分别部署在不同服务器。彼此通过网络通信和协调的系统。 可以指多个不同组件分布在网络上互相协作&#xff0c;比如说电商网站也可以一个组件的多个副本组成集群&#xff0c;互相协作如同一个组件&#xff0c;比如数据存储服务中为了数据不丢失而采取的多个服务…

AI时代,Matter如何融入与服务中国智能家居市场,助力中国企业出海?

随着智能家居产业的飞速发展&#xff0c;丰富多样的智能家居产品为消费者带来了便利的同时&#xff0c;因为不同品牌、不同产品之间的协议与标准不统一&#xff0c;导致消费者体验产生割裂&#xff0c;本来想买个“智能”家居&#xff0c;结果买了个“智障”家居&#xff0c;这…

大模型时代如何做安全?

现在应该没人怀疑AI时代的到来了吧&#xff0c;在HUB上每天100的新的预训练模型产生&#xff0c;不夸张的说的&#xff0c;现在稍微有点计算机基础的人都可以训练自己的模型了。 说远了&#xff0c;还是说说那些不争气的安全厂商吧。为啥只说安全厂商&#xff1f;因为国内还是…

SQL日期函数

文章目录 1.获取日期时间函数1.1 获取当前日期时间1.2 获取当前日期1.3 获取当前时间 2.日期格式化★★★2.1 日期转指定格式字符串2.2 字符串转日期 3.日期间隔3.1 增加日期间隔 ★★★3.2 减去一个时间间隔★★★3.3 日期相差天数&#xff08;天&#xff09;3.4 相差时间&…

QT中如何设置当前界面的背景图片并随着窗口拉伸而刷新

1、为当前主窗口设置背景图片 QSize size this->size();int width size.width();int height size.height();QPixmap pixmap("../src/B002.png"); //通过构造函数载入图片方式label1 new QLabel(this);label1->resize(width,height);pixmap.scaled(lab…

腾讯二面:如何保证接口幂等性?高并发下的接口幂等性如何实现?

什么是接口幂等性 接口幂等性这一概念源于数学&#xff0c;原意是指一个操作如果连续执行多次所产生的结果与仅执行一次的效果相同&#xff0c;那么我们就称这个操作是幂等的。在互联网领域&#xff0c;特别是在Web服务、API设计和分布式系统中&#xff0c;接口幂等性具有非常…

嵌入式软件面试-linux-中高级问题

Linux系统启动过程&#xff1a; BIOS自检并加载引导程序。引导程序&#xff08;如GRUB&#xff09;加载Linux内核到内存。内核初始化硬件&#xff0c;加载驱动&#xff0c;建立内存管理。加载init进程&#xff08;PID为1&#xff09;&#xff0c;通常是systemd或SysVinit。init…

安卓使用MQTT实现阿里云物联网云台订阅和发布主题(3)

一、订阅主题代码讲解 private final String mqtt_sub_topic "/sys/k0wih08FdYq/LHAPP/thing/service/property/set";//订阅话题//mqtt客户端订阅主题//QoS0时&#xff0c;报文最多发送一次&#xff0c;有可能丢失//QoS1时&#xff0c;报文至少发送一次&#xff0c…