易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
OpenCV 利用滚动条调整图像亮度
OpenCV 利用滚动条调整图像亮度:
/************************************************************************/
/* 亮度调整 */
/************************************************************************/
IplImage*transimg,*srcimg;
int
bright2adj;
void
re_adjust_bright(
int
)
{
assert(srcimg != NULL);
assert(transimg != NULL);
int
x,y,i;
if
(srcimg->nChannels==3)
{
for
(i = 0; i < 3; i++)
//彩色图像需要处理3个通道,灰度图像这里可以删掉
for
(y = 0; y < srcimg->height; y++)
for
(x = 0; x < srcimg->width; x++)
{
float
val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x*3+i];
val+=bright2adj;
if
(val<0) val=0;
else
if
(val>255) val=255;
((uchar*)(transimg->imageData + transimg->widthStep*y))[x*3+i] = (uchar)val;
}
}
else
{
for
(y = 0; y < srcimg->height; y++)
for
(x = 0; x < srcimg->width; x++)
{
float
val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x];
val+=bright2adj;
if
(val<0) val=0;
else
if
(val>255) val=255;
((uchar*)(transimg->imageData + transimg->widthStep*y))[x] = (uchar)val;
}
}
cvShowImage(
"image"
,transimg);
}
void
on_mouse3(
int
event,
int
x,
int
y,
int
flags,
void
* param)
{
if
(event==CV_EVENT_LBUTTONUP)
re_adjust_bright(0);
}
void
CCVMFCView::OnAdjustBrightness()
{
srcimg=cvCloneImage(workImg);
cvFlip(srcimg);
transimg=cvCloneImage(srcimg);
cvNamedWindow(
"image"
,CV_WINDOW_AUTOSIZE);
cvCreateTrackbar(
"亮度"
,
"image"
, &bright2adj, 255,re_adjust_bright);
//re_adjust_bright(0);
cvShowImage(
"image"
,srcimg);
cvSetMouseCallback(
"image"
,on_mouse3,0);
cvWaitKey(0);
cvDestroyWindow(
"image"
);
cvReleaseImage(&srcimg);
cvFlip(transimg);
m_dibFlag=imageReplace(transimg,&workImg);
m_ImageType=2;
Invalidate();
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图