[C++] opencv - cvtColor函数介绍和使用场景

这篇具有很好参考价值的文章主要介绍了[C++] opencv - cvtColor函数介绍和使用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉方面的功能。其中,cvtColor函数是OpenCV中非常重要的一个函数,用于将一种颜色空间的图像转换为另一种颜色空间的图像。本文将介绍cvtColor函数的相关知识,包括函数的介绍、函数原型和参数说明、函数使用的场景、完整代码实例以及总结等。

一、函数的介绍

cvtColor函数是OpenCV中的一个重要函数,用于将一种颜色空间的图像转换为另一种颜色空间的图像。该函数可以实现多种颜色空间之间的转换,例如BGR到灰度图、BGR到HSV、BGR到Lab等等。cvtColor函数的实现基于线性插值算法,因此在转换过程中可能会出现一定的误差。

二、函数原型和参数说明

该函数根据给定的颜色空间转换码code,将输入图像src从其原始颜色空间转换为指定的目标颜色空间,并将结果存储在输出图像dst中。如果dstCn不为0,则输出图像的通道数将被设置为dstCn,否则与输入图像的通道数相同。

下面是cvtColor函数的原型和参数说明:

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

参数说明:

  1. src:输入图像,通常是一个cv::Mat对象。
  2. dst:输出图像,也是一个cv::Mat对象,存储转换后的图像。
  3. code:颜色空间转换码,表示要进行的颜色空间转换类型。例如,COLOR_BGR2GRAY表示将BGR格式的图像转换为灰度图像。
  4. dstCn:输出图像的通道数,默认值为0,表示与输入图像的通道数相同。

颜色空间代码如下:

  • CV_BGR2GRAY:将BGR格式的图像转换为灰度图;
  • CV_BGR2HSV:将BGR格式的图像转换为HSV格式;
  • CV_BGR2LAB:将BGR格式的图像转换为LAB格式;
  • CV_BGR2Luv:将BGR格式的图像转换为Luv格式;
  • CV_BGR2RGB:将BGR格式的图像转换为RGB格式;
  • CV_BGR2XYZ:将BGR格式的图像转换为XYZ格式;
  • CV_BGR2YUV:将BGR格式的图像转换为YUV格式;
  • CV_BGR2YCrCb:将BGR格式的图像转换为YCrCb格式;
  • CV_HSV2BGR:将HSV格式的图像转换为BGR格式;
  • CV_HSV2RGB:将HSV格式的图像转换为RGB格式;
  • CV_LAB2BGR:将LAB格式的图像转换为BGR格式;
  • CV_LAB2Luv:将LAB格式的图像转换为Luv格式;
  • CV_LAB2RGB:将LAB格式的图像转换为RGB格式;
  • CV_Luv2BGR:将Luv格式的图像转换为BGR格式;
  • CV_Luv2RGB:将Luv格式的图像转换为RGB格式;
  • CV_RGB2BGR:将RGB格式的图像转换为BGR格式;
  • CV_RGB2HSV:将RGB格式的图像转换为HSV格式;
  • CV_RGB2LAB:将RGB格式的图像转换为LAB格式;
  • CV_RGB2Luv:将RGB格式的图像转换为Luv格式;
  • CV_RGB2YUV:将RGB格式的图像转换为YUV格式;
  • CV_RGB2YCrCb:将RGB格式的图像转换为YCrCb格式;
  • CV_XYZ2BGR:将XYZ格式的图像转换为BGR格式;
  • CV_XYZ2RGB:将XYZ格式的图像转换为RGB格式;
  • CV_YUV2BGR:将YUV格式的图像转换为BGR格式;
  • CV_YUV2RGB:将YUV格式的图像转换为RGB格式;
  • CV_YCrCb2BGR:将YCrCb格式的图像转换为BGR格式;
  • CV_YCrCb2RGB:将YCrCb格式的图像转换为RGB格式;
  • CV_YCrCb420p2BGR:将YCrCb420p格式的图像转换为BGR格式;
  • CV_YCrCb420p2RGB:将YCrCb420p格式的图像转换为RGB格式。

三、函数使用的场景

cvtColor函数通常用于以下场景:

  1. 图像处理:在进行图像处理时,需要对不同颜色空间的图像进行转换,以便更好地进行后续处理。

  2. 计算机视觉:在计算机视觉领域,需要对不同颜色空间的图像进行处理,以便更好地提取特征或进行分类。

  3. 人脸识别:在人脸识别领域,需要将彩色图像转换为灰度图或HSV图,以便更好地进行人脸检测和特征提取。

四、完整代码实例

下面是一个使用cvtColor函数将BGR格式的图像转换为灰度图的示例代码:

比较复制插入新建

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 读取一张BGR格式的图像
    Mat img = imread("test.jpg");
    if (img.empty())
    {
        cout << "Failed to read image!" << endl;
        return -1;
    }

    // 将BGR格式的图像转换为灰度图
    Mat gray;
    cvtColor(img, gray, CV_BGR2GRAY);

    // 显示原图和灰度图
    imshow("Original Image", img);
    imshow("Gray Image", gray);

    // 等待用户按下任意键退出程序
    waitKey(0);
    return 0;
}

五、总结

本文介绍了OpenCV中的cvtColor函数,包括函数的介绍、函数原型和参数说明、函数使用的场景、完整代码实例以及总结等章节。cvtColor函数是OpenCV中非常重要的一个函数,可以实现多种颜色空间之间的转换,对于图像处理和计算机视觉领域的应用非常广泛。文章来源地址https://www.toymoban.com/news/detail-786249.html

到了这里,关于[C++] opencv - cvtColor函数介绍和使用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV】关于OpenCV中imread/imwrite/imshow/cvtColor等 Api的简单描述和使用

    01、imread 官方定义 imread函数是OpenCV中的一个函数,用于从文件中读取图像。该函数支持读取多种图像格式,包括BMP、JPEG、PNG、TIF等常见格式。 tips: 注意这里imread函数加载的是8bit 图像 示例 02、imwrite 官方定义 imwrite函数是OpenCV中的一个函数,用于将图像写入文件中。该函数支

    2024年02月11日
    浏览(26)
  • [C++] opencv - imwrite函数介绍和使用场景

    OpenCV 是一个开源的计算机视觉库,它包含了许多用于图像处理和计算机视觉任务的函数。其中,imsave() 函数是 OpenCV 中的一个非常有用的函数,它可以让程序将处理后的图像数据保存到指定的文件中。 使用 imwrite() 函数可以将处理后的图像数据保存到本地文件系统中。例如,

    2024年02月04日
    浏览(32)
  • [C++] opencv - Mat::convertTo函数介绍和使用场景

    Converts an array to another data type with optional scaling.    该函数主要用于数据类型的相互转换。 The method converts source pixel values to the target data type. saturate_cast is applied at the end to avoid possible overflows: m(x,y)=saturate_castrtype(α(∗this)(x,y)+β)    这是函数底层算法实现公式,了解算法方便我们

    2024年01月18日
    浏览(40)
  • [C++] opencv - drawContours(绘制轮廓)函数介绍和使用场景

    OpenCV中的drawContours函数用于在图像上绘制轮廓。其函数原型如下: 比较复制插入新建 参数说明: image: 输出图像,即绘制轮廓后的图像。 contours: 轮廓集合,每个轮廓由一系列点组成。 contourIdx: 轮廓索引数组,指定要绘制哪些轮廓。如果为NULL,则绘制所有轮廓。 contourC

    2024年01月19日
    浏览(40)
  • [C++] opencv - HoughCircles(霍夫圆查找)函数介绍和使用场景

    HoughCircles函数用于在灰度图像中使用霍夫变换查找圆。 该函数通过修改霍夫变换来实现,通常可以很好地检测出圆的中心,但可能无法找到正确的半径。可以通过指定半径范围(minRadius和maxRadius)来协助该函数,或者在#HOUGH_GRADIENT方法中将maxRadius设置为负数以仅返回圆心而不进

    2024年02月03日
    浏览(31)
  • [C++] opencv - approxPolyDP(多边形拟合)函数介绍和使用场景

    OpenCV中的 approxPolyDP() 函数用于对形状进行逼近,以减少多边形的顶点数,可以用于对图像轮廓点进行多边形拟合。 函数原型如下: 其中, curve 是输入的点集,类型为 InputArray, 可以是 Mat 、 vectorPoint 等; approxCurve是输出的点集,类型为 OutputArray, 也是 Mat 类型; epsilon 是精

    2024年03月14日
    浏览(43)
  • [C++] opencv - fillPoly(填充多边形)函数介绍和使用场景

    fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。函数原型如下: fillPoly() 函数适用于需要绘制填充多边形的场景,例如在图像上绘制一个封闭的图形、制作一个简单的遮罩等。   fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实

    2024年02月19日
    浏览(33)
  • opencv遇到错误error: (-215:Assertion failed) _src.empty() in function ‘cv::cvtColor‘的解决方案

    在运行一个python的基于opencv的程序时,出现错误 cv2.error: OpenCV(4.4.0) error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘ 这个错误是由于读取数据路径的问题导致的,注意路径的两个问题: 1.路径中不能有中文 2.路径是英文的“/”,而不是“”

    2024年02月13日
    浏览(32)
  • cv2.error: OpenCV(4.6.0) (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

    OpenCV(4.6.0) imread 读取空 问题解决方法小记 详情如下: 解决方案 1. 安装imageio模块 2. 代码修改 材料参考 cv2.imread获取图片为空 2022-11-03关于cv2.imread()读取图片返回None的原因及解决办法

    2024年03月13日
    浏览(55)
  • opencv cv2.imread()报错: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

    问题: pycharm中使用opencv , 执行cv2.imread(filepath)读取图片时报错: cv2.error: OpenCV(4.7.0) D:aopencv-pythonopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’ 解决方案: 尝试以下几种方法: 1.查图片路径中是否有中文,尽量不要含中

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包