背景

 对图像进行点操作,来改变图像的亮度和对比度,原理如下图所示:

 这里就出现了一个隐患,我们知道像素值的取值范围为(0,255),但按照上面的公式运算结果会超出取值范围,还有可能是非整数,所以需要用到saturate_cast模板函数,该函数的原理如下:

if(data<0)
data=0;
else if(data>255)
data=255;

有了saturate_cast函数后,便可对图像的亮度、对比度进行操作了。

for (int y = 0; y < g_srcImage.rows; y++){for (int x = 0; x < g_srcImage.cols;x++){for (int c = 0; c < 3; c++){g_dstImage.at<Vec3b>(y, x)[c] = saturate_cast<uchar>((g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>(y, x)[c]) + g_nBrightValue);}}}

 附上源码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;static void on_ContrastAndBright(int, void*);
static void ShowHelpText();
int g_nContrastValue;
int g_nBrightValue;
Mat g_srcImage, g_dstImage;int main(){g_srcImage = imread("13.jpg");if (!g_srcImage.data){cout << "读取图片出错!" << endl;return false;}g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type());g_nContrastValue = 80;g_nBrightValue = 80;    //设置对比度和亮度的初值namedWindow("【效果图窗口】", 1);createTrackbar("对比度:", "【效果图窗口】", &g_nContrastValue, 300, on_ContrastAndBright);createTrackbar("亮  度:", "【效果图窗口】", &g_nBrightValue, 200, on_ContrastAndBright);on_ContrastAndBright(g_nContrastValue, 0);on_ContrastAndBright(g_nBrightValue, 0);    //对回调函数进行初始化while (char(waitKey(1)) != 'q'){}return 0;
}
static void on_ContrastAndBright(int, void*){namedWindow("【原始窗口】", 1);for (int y = 0; y < g_srcImage.rows; y++){for (int x = 0; x < g_srcImage.cols;x++){for (int c = 0; c < 3; c++){g_dstImage.at<Vec3b>(y, x)[c] = saturate_cast<uchar>((g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>(y, x)[c]) + g_nBrightValue);}}}imshow("【原始图像窗口】", g_srcImage);imshow("【效果图窗口】", g_dstImage);
}

OpenCV中saturate_cast模板函数的使用相关推荐

  1. 【OpenCV】OpenCV中积分图函数与应用

    OpenCV中积分图函数与应用 参考资料 opencv 查找integral,目前网上大部分的资料来自于opencv https://docs.opencv.org/master/d7/d1b/gro ...

  2. OpenCV中使用模板匹配识别空闲的货架空间

    但是点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 假设你是一名在超市工作的员工,被要求在商店里四处走动,检查需要 ...

  3. OpenCV中的模板匹配

    OpenCV中的模板匹配 在该demo中选取了两张猴哥的照片,一张用来获得模板,另外一张用模板去匹配. 下图为选取模板的图像: 以下为选取的匹配模板: 根据该模板在下面的图中找到猴哥的脸: 该demo ...

  4. opencv中的copyTo函数在opencv-Python中的实现

    Opencv中的copyTo()函数在opencv-Python中的实现 copyTo() 函数有两种方式 第一种:src_Image.copyTo(dst_Image),表示将原图复制到目标图中. ...

  5. opencv中伪彩色applyColorMap函数(C++ / Python)

    opencv中伪彩色applyColorMap函数(C++ / Python) 翻译 2017年06月23日 15:34:12 标签: 1654

  6. opencv中的approxPolyDP函数和boundingRect函数

    opencv中的approxPolyDP函数和boundingRect函数说明 cv2.boundingRect 举例: import numpy as npimage=cv2.imread(&quo ...

  7. 使用opencv中的merge()函数为BGR图像添加alpha通道

    先上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # 图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 # 图像处理 ...

  8. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪

    --by boluor 2009/5/20 如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求- 考 ...

  9. 解决opencv中cv2.VideoCapture()函数打开USB视频慢的问题

    解决opencv中cv2.VideoCapture()函数打开USB视频慢的问题!!! cv2.VideoCapture(0)打开电脑自带摄像头比cv2.VideoCapture(1)打开usb慢好多 ...

最新文章

  1. Kotlin基本语法和使用
  2. Android模拟器环境下SD卡内容的管理[转]
  3. Atitit 关于处理环保行动联盟和动物解放阵线游击队的任命书 委任状
  4. Codeforces Round #708 (Div. 2)
  5. delphi--csv,txt文本转换成excel .
  6. Oracle客户端工具安装(PL/SQL Developer 和 instantclient)
  7. CUDA10,Torch安装解决NOTFOUND CUDA_cublas_device_LIBRARY,Ubuntu16.04安装torch遇到的错误
  8. 现场总线->无线网络的技术->泛在网络
  9. ARM指令集 mov指令,ldr=伪指令,地址访问指令ldr,str,位运算指令and,orr,eor,bic,逻辑位移指令lsl,lsr
  10. linux解决笔记本pwm背光,担心PWM调光屏幕闪瞎眼?联想这些ThinkPad笔记本要注意...
  11. JuliaFEM中的数据格式——fields.jl
  12. 20个基于DPDK开源项目,建议收藏
  13. FS2222可调过压过流芯片IC,40V耐压过压保护可调OVP可调OCP
  14. 深度估计 DenseDepth 笔记
  15. Bayesian Convolution Neural Networks with Bernoulli Approximate Variational Inference
  16. vim 显示和隐藏行号
  17. Ripro子主题Eeesucai-child集成后台美化包源码QIW
  18. NeurIPS 2022|UIUC联合哥伦比亚大学提出VidIL模型,通吃小样本视觉语言任务
  19. mmdetection解决 ImportError: cannot import name ‘deform_conv_cuda’
  20. 记录React之富文本编辑器

热门文章

  1. MySql having语句
  2. my.cnf配置调优选项解读
  3. java 二维数组 排序_二维数组排序
  4. python定义二维数组_二维数组的定义、初始化和输出,C语言二维数组详解
  5. 喜报|智链万源(北京)数字科技有限公司荣获中关村高新技术企业证书
  6. [BZOJ 2085]POI2010 Hamsters
  7. markdown上划线和下划线
  8. 计算机2013知识,2013年职称计算机考试基础知识章节试题及答案一
  9. RTP和RTCP详解
  10. 灵雀云加入,龙蜥社区迎来国内领先的企业级PaaS服务商