python学opencv|读取图像(十一)彩色图像转灰度图的两种办法

【1】引言

前序学习过程中,已经掌握了保存彩色图像的技巧。相关链接为:

python学opencv|读取图像(二)保存彩色图像_cv.imread()-CSDN博客

在这篇文章中,给出了一种非常巧妙的办法,在imrea('filename',flags)函数中(),直接定义flags=0,这样就获得了灰度图像。

++图1++

但在后续的学习进程只能怪,我们理解了BGR的构成,掌握了自我生成灰度图和彩色图的技巧,相关文章包括且不限于:

python学opencv|读取图像(六)读取图像像素RGB值_opencv读取灰度图-CSDN博客

python学opencv|读取图像(九)用numpy创建黑白相间灰度图-CSDN博客

python学opencv|读取图像(十)用numpy创建彩色图像-CSDN博客

随着学习的深入,我们更喜欢直接操作构成彩色图像的BGR,这时候我们会遇到一个新的函数:cv.cvtColor(),且优先使用一个参数:COLOR_BGR2GRAY

【2】官网教程

点几下述链接直达官网:

OpenCV: Changing Colorspaces

然后我们会在这里发现,cv.cvtColor()函数可以实现彩色图像向灰度图像的转化,并且教程里特意说明对RGB图像要调用COLOR_BGR2GRAY参数。

++图2++

对COLOR_BGR2GRAY参数的说明见下述链接:

OpenCV: Color Space Conversions

在官网我们看到下述页面:

++图3++

其实理解下来就是:把彩色的图像转化为灰度图像。

【3】代码测试

【3.1】cv.imread()函数测试

首先还是使用老办法,用cv.imread()函数进行测试。在pycharm等编辑器中输入以下代码:

python 复制代码
import cv2 as cv #引入cv2模块
image=cv.imread("cv.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片
    cv.imshow('cvtest', image)  # 显示为灰度图
    cv.imwrite('opencv-gray-0.jpg', image) #保存灰度图
    cv.waitKey()  # 图片显示时间
    cv.destroyAllWindows()  # 释放所有窗口
else: #未找到图片
    print("Error: 图片无法加载")

图像cv.png为:

++图4++

运行代码后,转化的opencv-gray-0.jpg为:

++图5++

【3.2】cv.cvtColor()函数测试

然后使用新办法,用cv.cvtColor()函数,调用COLOR_BGR2GRAY参数对彩色图像进行转换。为增强对比效果,在3.1节代码内部直接新增相关代码,修改后的代码为:

复制代码
gray_image=cv.cvtColor(image,cv.COLOR_BGR2GRAY) #转化为灰度图
cv.imshow('cvtest-01',gray_image)  # 显示为灰度图
cv.imwrite('opencv-gray-im.jpg', image) #保存灰度图
cv.imwrite('opencv-gray-cv.jpg', gray_image) #保存灰度图

运行后,获得的opencv-gray-cv.jpg和图5一致。

【4】总结

掌握了彩色图像转灰度图像的两种办法:调用cv.imread()函数和cv.cvtColor()函数实现彩色图像转灰度图像。

相关推荐
测试_AI_一辰3 分钟前
AI 产品输出格式测试实战:为什么模型返回的 JSON 前端解析总报错
人工智能·ai·自动化·状态模式·ai编程
kyriewen1110 分钟前
你等的Babel编译,够喝三杯咖啡了——用Rust重写的SWC,只需眨个眼
开发语言·前端·javascript·后端·性能优化·rust·前端框架
CSCN新手听安15 分钟前
【Qt】Qt窗口(八)QFontDialog字体对话框,QInputDialog输入对话框的使用,小结
开发语言·c++·qt
IT_陈寒22 分钟前
SpringBoot自动配置坑了我,原来要这样绕过去
前端·人工智能·后端
东方小月33 分钟前
Claude Code 完整上手指南:MCP、Skills、第三方模型配置一次搞定
前端·人工智能·后端
tumu_C37 分钟前
用std::function减缓C++模板代码膨胀和编译压力的一个场景
开发语言·c++
AIFQuant43 分钟前
2026 全球股票/外汇/贵金属行情 API 深度对比:延迟、覆盖、价格与稳定性
python·websocket·ai·金融·mcp
BT-BOX1 小时前
Matlab 2025B下载安装教程
开发语言·matlab
EnCi Zheng1 小时前
01d-前馈神经网络代码实现 [特殊字符]
人工智能·深度学习·神经网络
阿里云大数据AI技术1 小时前
登顶WorldArena榜单!阿里云PAI助力中科院自动化所、中科第五纪打造具身世界模型FlowWAM
人工智能