opencv调节图像色相、饱和度、明度(H\S\V)

这篇博客介绍如何在Qt环境下,利用OpenCV库对图像进行色相、饱和度和明度的调节。文中详细阐述了所使用的开发环境,包括Qt5.5.1、opencv3.0和visual studio 2013,并提供了核心代码,分为图像处理和类型转换两个部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境
1、Qt5.5.1;
2、opencv3.0;
3、visual studio 2013.
二、核心代码
1、图像处理部分

//调节图像的色相、饱和度、明度
bool CvImageAdjust::AddHSV(const QImage& inImg, QImage& outImg, double dH, double dS, double dV)
{
bool  bResult = false;
QImage imgSrc = inImg.copy();
IplImage *lImage = CImageConvert::ConvertToIplImage(imgSrc);
cvCvtColor(lImage, lImage, CV_BGR2HSV);
int i;
uchar lut[256][3];
CvMat* lut_mat;
lut_mat = cvCreateMatHeader(1, 256, CV_8UC3);
cvSetData(lut_mat, lut, 0);
for (i = 0; i < 256; i++)
{
int h = (i + dH);
if (h > 180)
{
h -= 180;
}
else if (h < 0)
{
h += 180;
}

int s = (i + dS);
if (s < 0)
s = 0;
if (s > 255)
s = 255;

int v = (i + dV);
if (v < 0)
v = 0;
if (v > 255)
v = 255;

lut[i][0] = (uchar)h;
lut[i][1] = (uchar)s;
lut[i][2] = (uchar)v;
}
cvLUT(lImage, lImage, lut_mat);
cvCvtColor(lImage, lImage, CV_HSV2BGR);

QImage imgRult = CImageConvert::ConvertToQImage(lImage);
CImageConvert::AddAlpha(inImg, imgRult);
outImg = imgRult;

cvReleaseImage(&lImage);
bResult = true;
return bResult;
}
//自动调节图片色彩到目标值,取出H\S\V值
bool CvImageAdjust::AutoAdjustHsv(QImage& imgGoal, QImage& img_ave, double& dH, double& dS, double& dV)
{
if (imgGoal.width() <= 0
|| imgGoal.height() <= 0
|| img_ave.width() <= 0
|| img_ave.height() <= 0)
{
return false;
}

//创建AVG_S
QImage avgImage(QSize(1, 1), QImage::Format_ARGB32);
QRgb rgb = imgGoal.pixel(82 / 512.0 * imgGoal.width(), 162 / 512.0 * imgGoal.height());
avgImage.setPixel(0, 0, rgb);
//计算参考H,S,L值
int H_src, S_src, L_src;
CImageConvert::RGB2HSL_INT(qRed(rgb), qGreen(rgb), qBlue(rgb)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值