C++opencv 色彩空间转换和保存

这篇具有很好参考价值的文章主要介绍了C++opencv 色彩空间转换和保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.API

1.imwrite()函数       用于输出图像到文件

imwrite()格式:

bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>())

参数说明:

第一个参数:const string&类型的filename,指写入的文件名。需要带上后缀,如“123.jpg”。

第二个参数:InputArray类型的img,一个mat类型的图像数据。

第三个参数:constvector<int>(),一般情况下不需要填写。如果需要填写,有下面需要了解:

对于JPEG格式的图片,这个参数从0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95。
对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COPRESSION)从0到9。较高的值表示更小的尺寸和更长的压缩时间,默认值时3。
对于PPM,PGM,或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值0或1,默认值时1。
 

2.cvtColor()函数

是opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换成灰度图像。

函数定义为:

void cvtColor(srcimage,dstimage,int code,int dstCn=0);

参数说明: 


第一个参数是输入图像《MAT
第二个参数是输出图像MAT
第三个参数是颜色空间转换的标识符read默认bgr
第四个参数为目标图像的通道数,若该参数是0,表示目标图像取源图像的的通道数。
调用示例:cvtColor(srcimage,dstimage,Color_GRAY2BGR);

cvtColor()函数标识符如下表所示:(通道变换第三个参数,要一一对应不然程序报错)

  • 彩色到灰度 - COLOR_BGR2GRAY 对应数值 6
  • 灰度到彩色 - COLOR_GRAY2BGR 对应数值 8
  • BGR到HSV - COLOR_BGR2HSV 对应数值 40
  • HSV到BGR - COLOR_HSV2BGR 对应数值 54

C++opencv 色彩空间转换和保存

3.补充知识

RGB和HSV


彩色图像的通道是什么呢?

通常彩色图像有BGR三个通道
B,G,R,即按照蓝 绿 红的通道顺序
3个通道都是[0,255],即有256 * 256 * 256种组合
如果加上透明通道A(alpha),透明通道也是[0,255],就有256 * 256 * 256 * 256种组合

HSV通道

H(色调)范围[0,180]
S(饱和度)范围[0,255]
V(明度)范围[0,255]
其中HS表示颜色,V表示亮度

所以,不同的通道有不同的作用

比如:有时候有些东西不好处理,它没有一个专门的亮度通道
那我们调整亮度,我们就到HSV色彩空间处理就会更好一点,处理完之后再返回BGR色彩空间
 

2.实例代码  转换和保存

#include "mainwindow.h"

#include <QApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;
 int key;

Mat gray, Lab, HLS;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //w.show();

    namedWindow("windows", WINDOW_NORMAL);
    resizeWindow("windows", 500, 500);


    Mat srcImage = imread("C:\\Users\\29492\\Desktop\\Qt +opencv\\project\\baocun yu seyuzhuanhuan\\car7.png");
//默认BGR
    if (srcImage.empty())
    {
        printf("could not load image……\n");
    }


    imshow("windows",srcImage);

    cvtColor(srcImage, gray, COLOR_BGR2GRAY);  //转换颜色空间
    imshow("Gray", gray);    //显示效果图

    cvtColor(srcImage, Lab, COLOR_BGR2Lab);
    imshow("Lab", Lab);

    cvtColor(srcImage, HLS, COLOR_BGR2HSV);
    imshow("HLS", HLS);


imwrite("C:\\Users\\29492\\Desktop\\Qt +opencv\\project\\baocun yu seyuzhuanhuan\\hsv.png", HLS);
imwrite("C:\\Users\\29492\\Desktop\\Qt +opencv\\project\\baocun yu seyuzhuanhuan\\gray.png", gray);
imwrite("C:\\Users\\29492\\Desktop\\Qt +opencv\\project\\baocun yu seyuzhuanhuan\\Lab.png", Lab);


    while(1)
    {
        key = waitKey(0);
       
            if (key == 'q')
            {
            destroyAllWindows();
            break;    
            }
    }

    return a.exec();
}


 文章来源地址https://www.toymoban.com/news/detail-478586.html

到了这里,关于C++opencv 色彩空间转换和保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 初学opencv c++学习笔记(二)图像空间色彩转换cvtColor()

    对图像的色彩转换用到cvtColor()函数,本章将对此其用法进行解析。 目录 一、色彩空间转换 官方定义  函数参数解释 代码演示 RGB——HSV  RGB——GRAY  BGR——RGB 总结 提示:以下是本篇文章正文内容,下面案例可供参考 APL:cvtColor() 1. src (source):输入的源图像。为矩阵形式。

    2024年02月05日
    浏览(50)
  • opencv-19 图像色彩空间转换函数cv2.cvtColor()

    cv2.cvtColor() 函数是 OpenCV 中用于图像颜色空间转换的函数。它允许你将图像从一个色彩空间转换为另一个色彩空间。在 Python 中,你可以使用这个函数来实现不同色彩空间之间的转换。 函数的基本语法为: 参数说明: src:输入图像,可以是 NumPy 数组或 OpenCV 中的 Mat 对象。

    2024年02月15日
    浏览(55)
  • C++实战Opencv第二天——色彩空间转换函数和opencv中图像对象创建与赋值(从零开始,保姆教学)

    OpenCV是一个强大的计算机视觉库,使用C++作为主要编程语言,对于图像处理和计算机视觉领域具有重要意义。其提供了丰富的功能和算法,使得开发者能够快速实现各种图像处理和计算机视觉应用。OpenCV C++为图像处理和计算机视觉领域的开发者提供了一个高效、稳定的工具。

    2024年02月20日
    浏览(43)
  • opencv imwrite()保存指定路径

    cpp为例 第32行为相对路径,当前工作目录为根目录(指VS的工程根目录、vscode打开的文件夹目录)。 也可以使用绝对路径,如 注: imwrite()不会创建文件夹 如上相对路径的例子中,理想情况下图片会保存到snapPhotos文件夹内。但若不存在snapPhotos文件夹,则 不会做任何事(也不

    2024年02月11日
    浏览(39)
  • opencv(4): cv2.imwrite()图像的保存

    语法格式:retval = cv2.imwrite(filename, image [, paras]) 参数说明: filename :代表文件名的字符串。文件名必须包含图像格式,例如.jpg,.png等。 image :图像数据矩阵 paras: 不同编码格式的参数,可选项 cv2.CV_IMWRITE_JPEG_QUALITY :设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95)

    2024年02月01日
    浏览(47)
  • OpenCv色彩空间

    目录 一、RGB 二、图像处理入门 三、色彩空间的转换 在表示图像时,有多种不同的颜色模型,但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型,其中原色 (在RGB模型中,原色是红色 R、绿色 G 和蓝色 B)混合在一起就可以用来表示广泛的颜色范围。 每个原色(R,G,

    2024年02月16日
    浏览(39)
  • OpenCV 02(色彩空间)

    最常见的 色彩空间 就是RGB, 人眼也是基于RGB的色彩空间去分辨颜色的. OpenCV 默认使用的是BGR . BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同. 显示图片的时候需要注意适配图片的色彩空间和显示环境的色彩空间.比如传入的图片是BGR色彩空间, 显示环境是RBG空间

    2024年02月09日
    浏览(44)
  • opencv 图像色彩空间转化

    今天看了b站贾志刚的课,觉得不错,特地做学习笔记来和小伙伴分享 贾志刚的这个好像是2.0版本,30小时的,语言更加精炼,适合初级入门学习 第一节是常规安装   看他的步骤装就行了,记得配置完点应用再点确定,我第一次就是 没点然后就失败了,又得重配置一次 第二节就是基

    2024年02月22日
    浏览(46)
  • 使用matlab实现图像信号的色彩空间转换

    下面的这个代码是在使用了rgb2hsi()方法失败后,进行修改的。 rgb2hsi(img)这个方法可以将RGB图像转换为HIS图像;但是爆出了 Untitled5(line 5)hsi = rgb2hsi(img)这个错误。 查了下可能是因Matlab版本不支持rgb2hsi函数。Matlab版本较旧,所以就手动实现RGB到HSI的转换。 通过分离RGB通道,将图

    2024年02月04日
    浏览(50)
  • 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案

    原因:image图片是0-255,而imwrite保存图片的时候把图片标准化了,也就变为0-1,对于这个问题,只需要修改一下imwrite的输入就好,也就是括号后半部分那个参数*255,如下: 注意:括号里边的前半部分是自己起的文件名,后半部分“img_light”改成你自己的图像名。 比如我读入

    2024年02月16日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包