OpenCV图像亮度、对比度调节

Wesley13
• 阅读 471
#include "cv.h"    

#include "highgui.h"    

#include <stdio.h>    

int ImageAdjust(IplImage *src,IplImage *dst,    

                double low,double high,        //x direction    

                double bottom,double top,    //y direction    

                double gamma);    

int main(void)    

{    

    char *filename="lena.jpg";    

    IplImage *dst,*src = /blog.armyourlife.info/cvLoadImage(filename,0);    

    if(!src)    

    {    

        printf("Couldn't seem to Open %s, sorry/n",filename);    

        return -1;    

    }    

       

  cvNamedWindow( "src", 1 );    

    cvNamedWindow( "result", 1 );    

       

    // Image adjust    

    dst = cvCloneImage(src);    

    // 输入参数 [0,0.5] 和 [0.5,1], gamma=1    

    if( ImageAdjust( src, dst, 0, 0.5, 0.5, 1, 1)!=0)    

        return -1;    

       

    cvShowImage( "src", src );    

    cvShowImage( "result", dst );    

    cvWaitKey(0);    

    cvDestroyWindow("src");    

    cvDestroyWindow("result");    

    cvReleaseImage( &src );    

    cvReleaseImage( &dst );    

       

    return 0;    

}    

int ImageAdjust(IplImage* src, IplImage* dst,    

        double low, double high,   // X方向:low and high are the intensities of src    

        double bottom, double top, // Y方向:mapped to bottom and top of dst    

        double gamma )    

{    

    double low2 = low*255;    

    double high2 = high*255;    

    double bottom2 = bottom*255;    

    double top2 = top*255;    

    double err_in = high2 - low2;    

    double err_out = top2 - bottom2;    

    int x,y;    

    double val;    

    if(low<0 && low>1 && high <0 && high>1&&    

    bottom<0 && bottom>1 && top<0 && top>1 && low>high)    

        return -1;    

      // intensity transform    

    for( y = 0; y < src->height; y++)    

    {    

        for (x = 0; x < src->width; x++)    

        {    

            val = ((uchar*)(src->imageData + src->widthStep*y))[x];    

            val=pow((val - low2)/err_in, gamma)*err_out+bottom2;    

            if(val>255)    

                val=255;    

            if(val<0)    

                val=0; // Make sure src is in the range [low,high]    

            ((uchar*)(dst->imageData + dst->widthStep*y))[x] = (uchar) val;    

        }    

    }    

    return 0;    

}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
C++ stat判断路径是文件还是目录
Cstat判断路径是文件还是目录1include<iostream2include<sys/stat.h34usingnamespacestd;56voidfoo(constcharpath){7structst
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
2年前
OpenCV实现图像的旋转
include "cv.h"include "highgui.h"include "math.h"// clockwise 为true则顺时针旋转,否则为逆时针旋转IplImage rotateImage(IplImage src, int angle, boo
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
6个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这