当前位置: 首页 > news >正文

opencv彩色图像转灰度图原理

opencv彩色图像转灰度图原理

在OpenCV中,将彩色图像转换为灰度图像的基本原理是使用颜色空间转换的方法。具体来说,OpenCV提供了cvtColor函数,它可以将图像从一个颜色空间转换到另一个。

对于从BGR颜色空间(OpenCV中的默认彩色图像格式)转换到灰度,通常采用以下公式:

灰度 = 0.299 * 红色 + 0.587 * 绿色 + 0.114 * 蓝色

这个转换是根据人类视觉系统对不同颜色的敏感度来加权平均RGB通道的值的。

有三种方式可以将彩色图像转成灰度图
1、直接imread(“1.jpg” , 0);直接读取灰度图像
2、读取彩色图像然后 灰度 = 0.299 * 红色 + 0.587 * 绿色 + 0.114 * 蓝色进行转换
3、调用cvtColor函数cvtColor(srcImg, imgShow, COLOR_BGR2GRAY);


void MainWindow::on_pushButton_clicked()
{Mat srcImg = imread("D:\\1.jpg");if(srcImg.empty()){QMessageBox::information(this,"警告","图片读取失败,请检查图片路径!");return;}Mat imgShow ;cvtColor(srcImg, imgShow, COLOR_BGR2GRAY); // 图像格式转换QImage qImg = QImage((unsigned char*)(imgShow.data), imgShow.cols,imgShow.rows, imgShow.cols*imgShow.channels(), QImage::Format_RGB888);ui->label->setPixmap(QPixmap::fromImage(qImg.scaled(ui->label->size(), Qt::KeepAspectRatio)));cv::namedWindow("Display window", cv::WINDOW_AUTOSIZE);cv::imshow("Display window", imgShow);cv::waitKey(0);}void MainWindow::on_pushButton_3_clicked()
{Mat image = imread("D:\\1.jpg" , 0);if (image.empty()) {std::cout << "Could not open or find the image" << std::endl;return ;}qDebug()<<image.channels()<<endl;cv::namedWindow("Display window1", cv::WINDOW_AUTOSIZE);cv::imshow("Display window1", image);cv::waitKey(0);
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • .net 获取某一天 在当月是 第几周 函数
  • 【go】pprof 性能分析
  • 什么是CPU、GPU、NPU?(包懂+会)
  • 为什么eBay的防IP关联很重要?
  • react | 自学笔记 | 持续更新
  • 深拷贝与数据扁平化封装打开即用
  • java --- 性能优化01
  • Linux:体系结构和操作系统管理
  • Flutter的升级和降级步骤
  • QMT软件怎么申请开通?QMT软件到底是谁在用啊?QMT量化软件K线驱动介绍
  • tensor连接和拆分
  • 搜维尔科技:ART光学空间定位虚拟交互工业级光学跟踪系统
  • sourcetree配置ssh连接gitee
  • 中国企业500强!最新名单揭晓→
  • JavaScript高级进阶(二)
  • 【刷算法】求1+2+3+...+n
  • 【知识碎片】第三方登录弹窗效果
  • fetch 从初识到应用
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • jQuery(一)
  • MySQL用户中的%到底包不包括localhost?
  • select2 取值 遍历 设置默认值
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Unix命令
  • vue脚手架vue-cli
  • 创建一个Struts2项目maven 方式
  • 高程读书笔记 第六章 面向对象程序设计
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 嵌入式文件系统
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 手机端车牌号码键盘的vue组件
  • 数据仓库的几种建模方法
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小程序 setData 学问多
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 正则与JS中的正则
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 阿里云服务器购买完整流程
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​ssh免密码登录设置及问题总结
  • #stm32整理(一)flash读写
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #微信小程序(布局、渲染层基础知识)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Google的Objective-C编码规范
  • .bat批处理(一):@echo off
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Standard 的管理策略