彩色图像和灰度图像之间的转换
0.图像分类
1.黑白照片(二值照片)->图像中的颜色只有黑和白(0、255)
2.灰度照片->图像颜色取值在0~255,单通道
3.彩色照片->图像颜色取值在0~255,三通道
1.彩色图像转换为灰度图像
通过imread可以将彩色照片转化成灰度照片,其中灰度照片本质上是一个二维矩阵,彩色照片本质上是一个三维矩阵,因此灰度照片生成的原理是将彩色照片的B、G、R通道以一定的权重组合进行加法运算得到的,其计算公司参考如下:
测试代码:
# 灰度照片img_gray = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png', 0)cv2.imshow('img_gray',img_gray)print(f'gray shape:{img_gray.shape}')# 彩色照片img_bgr = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png', 1)cv2.imshow('img_bgr', img_bgr)print(f'bgr shape:{img_bgr.shape}')# 通过Y=0.299*R+0.587*G+0.114*B计算r,g,b=cv2.split(img_bgr)img_gray2=0.299*r+0.587*g+0.114*bimg_gray2=img_gray2.astype('uint8')cv2.imshow('img_gray2',img_gray2)print(f'img_gray2 shape:{img_gray2.shape}')
结果输出:
gray shape:(768, 1366)
bgr shape:(768, 1366, 3)
img_gray2 shape:(768, 1366)
2.灰度图像转换为彩色图像
要想将灰度图像转换为彩色图像,本质上就是将一个二维矩阵,转换成一个三维矩阵,简单的想法是彩色图像的B、G、R通道照片均为灰度照片。计算公式如下:
测试代码:
# 灰度照片img_gray = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png', 0)cv2.imshow('img_gray',img_gray)print(f'gray shape:{img_gray.shape}')# 彩色照片new_img=cv2.merge([img_gray,img_gray,img_gray])cv2.imshow('new_img',new_img)print(f'new_img shape:{new_img.shape}')
结果输出:
gray shape:(768, 1366)
new_img shape:(768, 1366, 3)
彩色图像和灰度图像之间的转换相关推荐
- RGB图像,索引图像,二值图像,灰度图像之间的转换
%% 将索引图像转换为RGB图像 % 将索引图像转换为其他图像时,需要提供 % 索引图像的数据和调色板 % 将其他图像转换为索引图像时,需要设置 % 数据和调色板 clear clc [X,map]= ...
- Python OpenCV 彩色图像与灰度图像的转换
今天是持续写作的第 41 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 想不到,今天学习的竟然还是彩色图像与灰度图像的转换.经过前面的学习,你们和我一样,有没有掌握 2 种彩色图 ...
- 彩色图像转灰度图像原理python
文章目录 彩色图像转灰度图像 数字图像 彩色图像 灰度图像 转换 彩色图像转灰度图像 数字图像 现在我们所接触到的图像绝大多数都是数字图像,图像数字化后,每个像素点就可以看作是一个小方格,每个小方格里 ...
- 时间不同单位之间的转换
在观察仿真波形的时候,经常会出现微妙,毫秒,皮秒之间的转换,出现过错误,每次记不清楚的时候还要重新查资料,现总结如下. 秒(second)是国际单位制中时间的基本单位,符号是s.有时也会借用英文缩写标 ...
- java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)
数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- ROS与PCL中点云数据之间的转换
此为文章初稿还没有完善,应该还有一些问题,等待后面有时间再继续更新,原创文章,未经允许,请勿转载!!! 首先介绍在PCL库中经常使用的两种点云之间的转换,这里将根据工程中的经验,从代码层面举例分析如何 ...
- 日期与unix时间戳之间的转换C++实现
之前在https://blog.csdn.net/fengbingchun/article/details/107023645 中介绍过gmtime和localtime的区别,这里介绍下日期与Unix ...
- java怎么改变数据类型_java数据类型之间的转换,是怎么回事啊? - 收获啦
1.数据类型的分类 2.比较数据类型之间的字节大小 1字节=8位 . 3.转换中的知识点 *java中整数类型默认的int类型:小数类型默认的double: *String的字符串转化为char类型时 ...
最新文章
- 程序员霸榜 2020 年十大高薪岗位,不料幸福度却垫底了!
- Next-best-action marketing简介
- indesign2020突然闪退_Adobe Photoshop 2020打不开,总是闪退,罪魁祸首在这里
- [MATLAB]MATLAB中SIMULINK常用命令表
- 如何通过ildasm/ilasm修改assembly的IL代码
- jekins构建通知邮件配置及邮件附件设置,jenkins构建通知邮件没有RF的log和report文件...
- matlab计算遥感影像最“佳”指数因子OIF
- LPTSTR CString 相互转换
- 《概率论与数理统计》(浙大第四版)第六章总结笔记(纯手写)
- 无刷直流电机四象限matlab pudn,一种无刷直流电机四象限PWM调制方式的分析和设计...
- Reading Note(3)——基于FPGA的动态可重构特性探索新型加速器架构
- STC宏晶单片机初始开发教程
- Node.js学习笔记(五)——WebSocket
- 华为2288H V5服务器⽆法开机
- Layer 开启与关闭加载层
- python实现论文查重系统_Python实现的检测网站挂马程序
- sklearn 中的 make_blobs 的参数解释
- C++Qt开发——SMTP协议
- linux shell 判断一个文件是不是链接文件
- java循环练习题及答案_循环练习题及答案
热门文章
- 移动收款功能(未完成,无参考价值)
- (遇到问题)鼠标右键卡住且一直显示转圈
- python比赛积分类算法题_python常用算法题
- 社工利器--setoolkit之钓鱼攻击
- 51单片机PWM源码讲解 小车调速 呼吸灯等应用
- DEAP Example: One Max Problem
- 《scikit-learn机器学习》决策树③ -泰坦尼克号幸存者预测【思路+代码】
- Redis报错Java.net.UnknownHostException的解决办法
- 计算机页面不稳定怎么办,电脑网速不稳定怎么解决_电脑网速时快时慢的处理方法...
- Python机器学习:逻辑回归008OvR与OvO