saturate_cast<uchar>主要是为了防止颜色溢出操作

原理大致如下
if(data<0) data=0;
elseif(data>255) data=255;

比如我们对像素进行线性操作。

<1> 不使用saturate_cast<uchar>

 //三个for循环,执行运算 g_dstImage(i,j) =a*g_srcImage(i,j) + bfor (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);g_dstImage.at<Vec3b>(y, x)[c] = (g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>(y, x)[c]) + g_nBrightValue;}}}

<2> 使用saturate_cast<uchar>

 //三个for循环,执行运算 g_dstImage(i,j) =a*g_srcImage(i,j) + bfor (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);}}}

总结:

相当于是对图像色彩变化时做的保护!

【OpenCV】中saturate_castuchar的含义和用法是什么?相关推荐

  1. Java中static的含义和用法

    Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...

  2. python的含义和用法_python中列表的含义及用法

    示例 列表是元素的集合,存储在一个变量中.列表中存储的元素类型没有限制,下面是列表的一个简单例子. students = ['bernice', 'arron', 'cody'] for studen ...

  3. python中main的含义及用法_python中main函数的用法

    Python Python开发 Python语言 python中main函数的用法 什么场景下会有main函数? 当该python脚本被作为模块(module)引入(import)时,其中的main( ...

  4. android中tools的含义及用法

    终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预 ...

  5. opencv中CV_IMAGE_ELEM的用法读取每个像素

    可以使用OpenCV定义的宏来提取象素值 假设灰度图像image,存取其i行j列的象素可以这样:CV_IMAGE_ELEM(image, uchar,y, x) 如果是彩色图像就是 CV_IMAGE_ ...

  6. OpenCV中CvArr* 的含义~

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 今天在查询函数cvConvertScale的原型 ...

  7. drop table中cascade的含义及用法

    在删除一个表时,如果该表的主键是另一个表的外键,如果不用cascade关键字就会报错: SQL> drop table dict_loc_type;drop table dict_loc_typ ...

  8. java中static什么意思_Java中static的含义和用法

    static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! 3.当成员被static修饰之后, ...

  9. 简单说明xml文件中foreach中collection的含义和用法

    前提: 一般出现在mybatis框架中,写sql的xml文件中 目的: 方便在xml文件中写含有in的sql:例如:select * from table where name in ("1 ...

最新文章

  1. H.264编码系统几个比较重要的算法
  2. 新晋小白怎样才能做好seo优化
  3. [JAVA][Liferay] Configure sharding in multiple sites
  4. 【自动驾驶】23.相机成像究竟是成在像平面还是成在焦平面
  5. Windows 全局钩子 Hook 详解
  6. c字符串中包含双引号_码哥学Python,一起解密神秘的字符串密码
  7. android 九宫格封装,Android 九宫格布局
  8. 怎样让计算机快速开机,怎样设置可以让电脑快速启动开机.doc
  9. ncm 网络_江森楼宇自控网络控制模块NCM优势详解
  10. 田汉卿:量化投资与风险控制(会议纪要)
  11. 发那科oimf是什么时候出的_请问下FANUC Oi-MF系统怎么把卡里的程序传到机床里面?...
  12. C4droid导出程序
  13. Android音视频——Libyuv使用实战
  14. 毕业设计(毕设)目标和要求 (以计算机软件毕业设计为例)
  15. MOSS的备份与还原
  16. 代价敏感学习初探 - 有偏损失函数设计
  17. 需求和设计阶段使用的IPO图
  18. hdu5020 Revenge of Collinearity 求三点共线的点对个数
  19. 计算机毕业设计ssm基于B_S的汽车售后服务管理系统e48c4系统+程序+源码+lw+远程部署
  20. 设计模式-实习期笔记

热门文章

  1. 在国内上市需要什么条件
  2. 2020年12月DASCTF Misc题 马老师的秘籍 WP
  3. 解决批量解密DES文件(以图片为例子)
  4. ZJH学长的茶叶1001
  5. Java 数据库 课设 职工工资管理系(源代码)
  6. windows平台使用cmake编译libnfc 1.7.0 rc6全过程
  7. final、finally、finalized区别
  8. 3.7V升压5V2A,锂电池升压5V2.4A方案
  9. 前有阿里苏宁,后有拼多多国美
  10. 读《费马大定理——一个困惑了世间智者358年的迷》