03.OpenCV图片色彩空间转换与图片保存

OpenCV图片色彩空间转换与图片保存

主要涉及两个函数cv::cvtColorcv::imwirte

1、API介绍

cv::cvtColor函数原型

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

1.1、参数解释

  • src:输入图像(必须是 8-bit、16-bit 或 32-bit 的单通道或多通道图像)。
  • dst:输出图像,必须与输入图像 src 在数据类型和深度上兼容,通常是不同的颜色空间。
  • code:转换代码,指定颜色空间的转换类型。常见的颜色空间转换代码
    • cv::COLOR_BGR2GRAY:BGR -> 灰度
    • cv::COLOR_BGR2RGB:BGR -> RGB
    • cv::COLOR_BGR2HSV:BGR -> HSV
    • cv::COLOR_BGR2LAB:BGR -> LAB
    • cv::COLOR_BGR2XYZ:BGR -> XYZ
    • cv::COLOR_BGR2HLS:BGR -> HLS
    • cv::COLOR_BGR2YUV:BGR -> YUV
    • cv::COLOR_GRAY2BGR:灰度 -> BGR
    • cv::COLOR_HSV2BGR:HSV -> BGR
    • cv::COLOR_RGB2BGR:RGB -> BGR
    • cv::COLOR_RGB2GRAY:RGB -> 灰度
    • 还有其他多种颜色空间转换方式,详细的可以查阅OpenCV 官方文档
  • dstCn(可选):目标图像的通道数,通常为 0,表示根据 src 图像的通道数自动推断。

cv::imwrite函数原型

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

1.2、参数解释

  • filename:要保存的文件的路径和文件名(包括文件扩展名,如 .jpg, .png 等)。它是一个字符串,指定图像保存的目标路径。
  • img:输入图像,即需要保存的图像数据,类型为 cv::Mat
  • params(可选):用于图像编码的参数,具体参数根据保存的图像格式不同而不同。例如:
    • 对于 PNG 格式,可以使用 cv::IMWRITE_PNG_COMPRESSION 来设置压缩级别。
    • 对于 JPEG 格式,可以使用 cv::IMWRITE_JPEG_QUALITY 来设置图像质量。

2、参考代码及注释

#include "stdio.h"
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
int main()
{
	// 读取图像
	cv::Mat srcImage=cv::imread("E:/image/opencv-logo.png");
	// 判断图像是否读取成功
	if (srcImage.empty())
	{	
		std::cerr << "Error: Image not found." << std::endl;
		return -1;
	}
	//转为灰度图
	cv::Mat grayImage;
	cvtColor(srcImage, grayImage, cv::COLOR_BGR2GRAY);

	//转为HSV
	cv::Mat hsvImage;
	cvtColor(srcImage, hsvImage, cv::COLOR_BGR2HSV);

	// 显示图像
	cv::imshow("color", srcImage);
	cv::imshow("灰度", grayImage);
	cv::imshow("HSV", hsvImage);
	
	//保存转换结果到当前目录
	cv::imwrite("cvLogo灰度.png", grayImage);
	cv::imwrite("cvLogo-HSV.png", hsvImage);

	// 等待按键事件,按任意键关闭窗口
	cv::waitKey(0);
	destroyAllWindows();

	return 0;
}

原图、灰度图、HSV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值