OpenCV颜色变换cvtColor

news2025/4/24 3:17:43

OpenCV计算机视觉开发实践:基于Qt C++ - 商品搜索 - 京东

颜色变换是imgproc模块中一个常用的功能。我们生活中看到的大多数彩色图片都是RGB类型的,但是在进行图像处理时需要用到灰度图、二值图、HSV(六角锥体模型,这个模型中颜色的参数分别是色调H、饱和度S、明度V)、HSI等颜色制式,对此OpenCV提供了cvtColor()函数来实现这些功能,这个函数用来进行颜色空间的转换。随着OpenCV版本的升级,对于颜色空间种类的支持也越来越多,因此涉及不同颜色空间之间的转换,比如RGB和灰度的互转、RGB和HSV的互转等。

cvtColor函数声明如下:

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 );

参数说明如下:

  • src:用于输入图像,即要进行颜色空间变换的原图像,可以是Mat类。
  • OutputArray dst:用于输出图像,即进行颜色空间变换后存储的图像,也可以是Mat类。
  • code:表示转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片。
  • dstCn:表示目标图像通道数,默认取值为0,如果取值为0,就由src和code决定。
  • InputArray和OutputArray:都是接口类,它们可以是Mat、Mat_<T>、Mat_<T, m, n>、vector<T>、vector<vector<T>>和vector<Mat>。

函数cvtColor的作用是将一个图像从一个颜色空间转换到另一个颜色空间,但是当从RGB向其他类型转换时,必须明确指出图像的颜色通道。值得注意的是,在OpenCV中,默认的颜色制式排列是BGR而非RGB。因此,对于24位颜色图像来说,前8位是蓝色,中间8位是绿色,最后8位是红色。

需要注意的是,cvtColor()函数不能直接将RGB图像转换为二值图像,需要借助threshold函数。

我们常用的颜色空间转换有两种:BGR转为灰度图和BGR转为HSV。下面来看一个例子,将图像转换为灰度图和HSV。

【例4.1】将图像转换为灰度图和HSV

   打开Qt Creator,新建一个控制台工程,工程名是test。

   在IDE中打开main.cpp,输入如下代码:

#include <QDebug>
#include <opencv2/imgproc/types_c.h> // for CV_RGB2GRAY
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcImage = imread("sky.jpg");

	// 判断图像是否加载成功
	if (!srcImage.data)
	{
		qDebug() << "图像加载失败!";
		return false;
	}
	else
		qDebug()<< "图像加载成功!";

	// 显示原图像
	namedWindow("src", WINDOW_AUTOSIZE);
	imshow("src", srcImage);

	// 将图像转换为灰度图,采用CV_前缀
	Mat grayImage;
	cvtColor(srcImage, grayImage, CV_RGB2GRAY);     // 将图像转换为灰度图
	namedWindow("gray", WINDOW_AUTOSIZE);
	imshow("gray", grayImage);

	// 将图像转换为HSV,采用COLOR_前缀
	Mat HSVImage;
	cvtColor(srcImage, HSVImage, COLOR_BGR2HSV);    // 将图像转换为HSV
	namedWindow("HSV", WINDOW_AUTOSIZE);
	imshow("HSV", HSVImage);
	waitKey(0);
	return 0;
}

保存工程并运行,结果如图4-1所示。

图4-1

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

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

相关文章

Manus技术架构、实现内幕及分布式智能体项目实战

Manus技术架构、实现内幕及分布式智能体项目实战 模块一&#xff1a; 剖析Manus分布式多智能体全生命周期、九大核心模块及MCP协议&#xff0c;构建低幻觉、高效且具备动态失败处理能力的Manus系统。 模块二&#xff1a; 解析Manus大模型Agent操作电脑的原理与关键API&#xf…

下载油管视频 - yt-dlp

文章目录 1. yt-dlp与you-get介绍1.1 主要功能对比1.2 使用场景1.3 安装 2. 基本命令介绍2.1 默认下载视频2.2 指定画质和格式规则2.3 下载播放列表2.4 备注 3. 参考资料 之前只使用you-get下载b站视频&#xff0c;当时了解you-get也可下载油管视频&#xff0c;但之前无此需求&…

济南通过首个备案生活服务大模型,打造行业新标杆

近日&#xff0c;一则振奋人心的消息在人工智能领域传开&#xff1a;济南本土企业丽阳神州智能科技有限公司自主研发的 “丽阳雨露” 大模型成功通过国家网信办的备案。这一成果不仅是济南企业在科技创新道路上的重大突破&#xff0c;更标志着我国在生活服务领域的人工智能应用…

第6次课 贪心算法 A

向日葵朝着太阳转动&#xff0c;时刻追求自身成长的最大可能。 贪心策略在一轮轮的简单选择中&#xff0c;逐步导向最佳答案。 课堂学习 引入 贪心算法&#xff08;英语&#xff1a;greedy algorithm&#xff09;&#xff0c;是用计算机来模拟一个「贪心」的人做出决策的过程…

Hexo+Github+gitee图床零成本搭建自己的专属博客

一个详细、完善的 Hexo 博客部署教程&#xff0c;不仅涵盖了基本的安装、配置、生成与部署步骤&#xff0c;还增加了常见问题的解决、主题设置、图片上传等 在开始之前可以看看我最终搭建出来的成果&#xff1a;https://liangjh.blog 1.安装git和nodejs 在Windows上使用Git&a…

数字信号处理技术架构与功能演进

数字信号处理&#xff08;DSP&#xff09;是通过数字运算实现信号分析、变换、滤波及调制解调的技术领域&#xff0c;其发展过程与技术应用如下&#xff1a; 一、定义与核心功能 技术定义&#xff1a;通过算法将模拟信号转换为数字形式进行处理&#xff0c;具有高精度、可编程…

深入理解 Android Handler

一、引言 Handler 在安卓中的地位是不言而喻的&#xff0c;几乎维系着整个安卓程序运行的生命周期&#xff0c;但是这么重要的一个东西&#xff0c;我们真的了解它吗&#xff1f;下面跟随着我的脚步&#xff0c;慢慢揭开Hanler的神秘面纱吧&#xff01; 本文将介绍Handler 的运…

C++ 什么是隐式类型转换,什么是显式类型转换

在 C 中&#xff0c;​​类型转换​​是将一种数据类型的值转换为另一种数据类型的过程&#xff0c;分为 ​​隐式类型转换​​&#xff08;由编译器自动完成&#xff09;和 ​​显式类型转换​​&#xff08;由程序员手动指定&#xff09;。以下是它们的区别和示例&#xff1a…

NVIDIA 自动驾驶技术见解

前言 参与 NVIDIA自动驾驶开发者实验室 活动&#xff0c;以及解读了 NVIDIA 安全报告 自动驾驶 白皮书&#xff0c;本文是我的一些思考和见解。自动驾驶技术的目标是为了改善道理安全、减少交通堵塞&#xff0c;重塑更安全、高效、包容的交通生态。在这一领域&#xff0c;NVI…

【Flask】Explore-Flask:早期 Flask 生态的实用指南

开源项目&#xff1a;explore-flask/README.rst at master rpicard/explore-flask (github.com) 一、Coding conventions Summary Try to follow the coding style conventions laid out in PEP 8. Try to document your app with docstrings as defined in PEP 257. def…

【论文阅读21】-PSOSVM-CNN-GRU-Attention-滑坡预测(2024-12)

这篇论文主要提出并验证了一种新型的混合智能模型&#xff08;PSOSVM-CNN-GRU-Attention&#xff09;&#xff0c;用于准确预测滑坡的点位移&#xff0c;并构建可靠的位移预测区间。通过对Baishuihe滑坡和Shuping滑坡的案例分析&#xff0c;展示了该模型的出色性能。 [1] Zai D…

蓝牙 6.0 发布,解锁无线科技新可能

在5G和Wi-Fi 7高速发展的时代&#xff0c;蓝牙技术始终以独特优势深度融入日常生活。从无线耳机到智能家居&#xff0c;它凭借低功耗、高兼容的特性&#xff0c;悄然连接各类智能设备&#xff0c;打造无缝的数字生活体验。无论是聆听音乐、智能门禁还是健康监测&#xff0c;蓝牙…

EasyCVR视频智能分析平台助力智慧园区:全场景视频监控摄像头融合解决方案

一、方案背景 在智慧园区建设的浪潮下&#xff0c;设备融合、数据整合与智能联动已成为核心诉求。视频监控作为智慧园区的“视觉中枢”&#xff0c;其高效整合直接影响园区的管理效能与安全水平。然而&#xff0c;园区内繁杂的视频监控设备生态——不同品牌、型号、制式的摄像…

为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器

有没有花 20 分钟浏览您的文件夹以找到心中的特定图像或屏幕截图&#xff1f;您并不孤单。 作为工作中的产品经理&#xff0c;我总是淹没在竞争对手产品的屏幕截图、UI 灵感以及白板会议或草图的照片的海洋中。在我的个人生活中&#xff0c;我总是捕捉我在生活中遇到的事物&am…

K8S节点出现Evicted状态“被驱逐”

在Kubernetes集群中&#xff0c;Pod状态为“被驱逐&#xff08;evicted&#xff09;”表示Pod无法在当前节点上继续运行&#xff0c;已被集群从节点上移除。 问题分析&#xff1a; 节点磁盘空间不足 &#xff0c;使用df -h查看磁盘使用情况 可以看到根目录 / 已100%满&#x…

重学React(一):描述UI

背景&#xff1a;React现在已经更新到19了&#xff0c;文档地址也做了全面的更新&#xff0c;上一次系统性的学习还是在16-17的大版本更新。所以&#xff0c;现在就开始重新学习吧&#xff5e; 学习内容&#xff1a; React官网教程&#xff1a;https://zh-hans.react.dev/lea…

遨游通讯发布国产化旗舰三防手机AORO AU1:以自主可控重塑工业安全

在全球产业链加速重构的背景下&#xff0c;国产化技术突破已成为工业领域高质量发展的核心驱动力。作为专精特新中小企业&#xff0c;遨游通讯始终以“让世界更安全、更高效、更简单”为使命&#xff0c;深耕“危、急、特”场景智能通信设备的研发。近日&#xff0c;遨游通讯正…

【Python】Selenium切换网页的标签页的写法(全!!!)

在使用selenium做网站爬取测试的时候&#xff0c;我们经常会遇到一些需要点击的元素&#xff0c;才能点击到我们想要进入的页面&#xff0c; 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页&#xff0c;你的浏览器网页标签栏 be like: 那…

DeepSeek和Excel结合生成动态图表

文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表&#xff0c;用于日常汇报&#xff0c;于是找到了 DeepseekExcel王牌组合&#xff0c;其等同于动态图…

Ubuntu20.04 部署llama-factory问题集

llama3 微调教程之 llama factory 的 安装部署与模型微调过程&#xff0c;模型量化和gguf转换。_llamafactory 部署-CSDN博客 1.跟着教程 llama-factory下载不下来 来&#xff0c;试着换源&#xff0c;多试几次&#xff0c;就可以成功了。。。 2.跟着教程&#xff0c;发现无法…