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

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

具体用法:
原图:

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;int main(int argc, const char* argv[]) {Mat src, dst1, dst2;src = imread("./test.jpg");//if (src.empty()) {if (!src.data){printf("could not load image...\n");return -1;}namedWindow("input img");   //默认自动窗口大小imshow("input img", src);dst1 = Mat::zeros(src.size(), src.type());    //第二个参数是位深度,目前值为16dst2 = Mat::zeros(src.size(), src.type());//三个for循环,执行运算 g_dstImage(i,j) =a*g_srcImage(i,j) + bfor (int y = 0; y < src.rows; y++){for (int x = 0; x < src.cols; x++){for (int c = 0; c < 3; c++)   //三个通道{dst1.at<Vec3b>(y, x)[c] = src.at<Vec3b>(y, x)[c] * 2;   //不饱和滤除dst2.at<Vec3b>(y, x)[c] = saturate_cast<uchar>(src.at<Vec3b>(y, x)[c] * 2);   //饱和滤除}}}namedWindow("output img1");  //默认自动窗口大小namedWindow("output img2");imshow("output img1", dst1);imshow("output img2", dst2);waitKey(0);return 0;
}

编译运行结果:

代码中把每个像素点对应每个通道的值都翻了两倍,上面是没经过饱和剔除的,下面的是经过饱和剔除的

参考文章1:【OpenCV】中saturate_cast<uchar>的含义和用法是什么?

OpenCV saturate_cast<uchar>函数用法(饱和剔除)(像素限制、溢出滤除、像素设限、防溢出)相关推荐

  1. OpenCV最全函数用法

    记录OpenCV中学习的函数用法 文章目录 图像阈值 cv.threshold()全局阈值 cv.adaptiveThreshold()自适应阈值 Otsu's Binarization: 基于直方图 ...

  2. opencv中cvtcolor()函数用法总结(07)

    还是老习惯,分三步走.第一步,功能说明.第二步,结果图显示,第三步,API详解.第四步,代码展示(注释很详细,保证所有有C++基础的人都可以看懂.) 第一步,功能说明:cvtcolor()函数是一个颜 ...

  3. OpenCV的projectPoints函数用法

    函数cvProjectPoints2通过给定的内参数和外参数计算三维点投影到二维图像平面上的坐标. #include "opencv2/core/core.hpp" #includ ...

  4. OpenCV学习笔记——HSV颜色空间超极详解inRange函数用法及实战

    目录 一.HSV颜色系统简介 二.HSV值对颜色的影响 三.HSV和RGB的互相转化 四.OpenCV中的HSV颜色体系 五.OpenCV实战--两种方法使用OpenCV进行颜色分割 六.inRang ...

  5. OpenCV中saturate_cast模板函数的使用

    背景  对图像进行点操作,来改变图像的亮度和对比度,原理如下图所示:  这里就出现了一个隐患,我们知道像素值的取值范围为(0,255),但按照上面的公式运算结果会超出取值范围,还有可能是非整数,所以需 ...

  6. 【OpenCV】cv2.putText()函数用法

    文章目录 cv2.putText()函数用法 参数 字体选择 例如 cv2.putText()函数用法 cv2.putText(image, text, org, font, fontScale, c ...

  7. OpenCV之cvSmooth函数平滑滤波

    1.cvSmooth函数用法             定义原型 <span style="font-size:12px;"> void cvSmooth( const ...

  8. OpenCV学习(函数)

    OpenCV[未完结] 1_图片读取与显示 imread()函数:读取图片 param1:图片的名称 如果当前读入的图片与该脚本在相同目录下,则路径可以为相对路径 如果当前读入的图片不与该脚本在相同目 ...

  9. OpenCV各模块函数使用实例(3 基本输入输出和色彩变换)

    本节主要翻译自OpenCV的帮助资料,并结合一些编程考量. D.基本输入输出函数 imread(fln),imwrite(fln,img); 函数原型: Mat cv::imread(const St ...

最新文章

  1. python基础教程第二版下载-Python基础教程(第2版)
  2. java三个环境变量_java基础(一):我对java的三个环境变量的简单理解和配置
  3. Sonar与jenkins集成
  4. python应聘的职位_Python学到哪种程度可以去应聘相关的职位了?
  5. Coding Problem 模拟
  6. ShellSort -- 希尔排序
  7. keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr
  8. apa引用要在文中吗_【019】写作格式 | APA 7th style 引用格式
  9. python鼠标自动点击脚本_用Python实现鼠标自动点击
  10. 平面设计图文混排要怎么做
  11. PCB Layout爬电距离、电气间隙如何确定-安规
  12. LeetCode:934. Shortest Bridge - Python
  13. 怎么扩展服务器内存?
  14. OLED(1)与LDC区别
  15. 苹果公司发展史_苹果公司的发展历史
  16. 【自存代码】划分数据集为训练集和测试集
  17. Ruby读取Excel文件的两种方法
  18. 概率论基础(sigma域、测度)
  19. 深度学习之 DCGAN 及TensorFlow 实现
  20. 第二十章:因特网协议第四版(IPv4):转发和本地传递

热门文章

  1. 10套华丽的 Windows 8 Metro 风格图标【2000+免费图标】
  2. 分享18个常用的网站性能测试工具
  3. 在JSP中如何或得当前绝对路径
  4. 全面降低windows系统的安全隐患 (四)
  5. 字母出现频率c语言,统计字母的使用频率c语言实现
  6. 【测试】批量删除供应商配额(Quota )
  7. 【MM模块】Invoice for POs with Acc Assignment 科目指派
  8. SAP导出Excel错点拒绝处理
  9. 大洋洲群狼来了! 这是中国篮球学习契机?
  10. 为你的集成需求选择合适的ESB