openCV中的saturate_cast()方法
在OpenCV学习中经常看见saturate_cast的使用,下面的代码会展示它的作用,详细的代码可以参见文章http://blog.csdn.net/mjlsuccess/article/details/12400787
- //使用图像混合例子中的C语言版本演示
- for (int i=0; i<src1.rows; i++)
- {
- const uchar* src1_ptr = src1.ptr<uchar>(i);
- const uchar* src2_ptr = src2.ptr<uchar>(i);
- uchar* dst_ptr = dst.ptr<uchar>(i);
- for (int j=0; j<src1.cols*nChannels; j++)
- {
- dst_ptr[j] = saturate_cast<uchar>(src1_ptr[j]*alpha + src2_ptr[j]*beta + gama);//gama = -100, alpha = beta = 0.5
- // dst_ptr[j] = (src1_ptr[j]*alpha + src2_ptr[j]*beta + gama);
- }
- }
- imshow("output2",dst);
这里加入了溢出保护,结果如下
- //没加入溢出保护
- for (int i=0; i<src1.rows; i++)
- {
- const uchar* src1_ptr = src1.ptr<uchar>(i);
- const uchar* src2_ptr = src2.ptr<uchar>(i);
- uchar* dst_ptr = dst.ptr<uchar>(i);
- for (int j=0; j<src1.cols*nChannels; j++)
- {
- // dst_ptr[j] = saturate_cast<uchar>(src1_ptr[j]*alpha + src2_ptr[j]*beta + gama);//gama = -100, alpha = beta = 0.5
- dst_ptr[j] = (src1_ptr[j]*alpha + src2_ptr[j]*beta + gama);
- }
- }
- imshow("output2",dst);
大致的原理应该如下
- if(data<0)
- data=0;
- else if(data>255)
- data=255;
openCV中的saturate_cast()方法相关推荐
- OpenCV中背景建模方法mog2——Adaptive GMM算法小结
GMM是网上到处可见且用得最多的背景建模算法,论文上很多相关概率公式,又看了很多博客对于GMM的解释,直到现在还总是觉得很难理解其中的真谛,从各方面整理一下目前自己所理解的内容,如果有理解偏差,欢迎指 ...
- 基于C++的opencv中Mat矩阵运算方法总结
文章目录 前言 一.Mat运算种类 1.1 代数运算 1.2 类型转换 前言 Mat类是目前opencv最为常用的图像数据格式,其优点在于无需手动开辟内存空间和实时释放,针对此类的各种运算方法有很多, ...
- OpenCV中的傅里叶的门道
接触到傅里叶-梅林算法,需要用到傅里叶变换,于是去查了一下OpenCV中的实现方法,没想到习以为常的傅里叶变换之中的门道还不少. //傅里叶变换https://blog.csdn.net/keith_ ...
- OpenCV中的归一化
归一化就是把数据经过处理后限制在某个特定范围内. opencv 中使用 normalize 方法来实现归一化,它的函数原型如下 cv2.normalize(src, dst, alpha=None, ...
- opencv中如何调整图像亮度和对比度,以及亮度和对比度调整的原理
文章目录 1. 调整图像亮度和对比度的原理 2. python实现的一个代码如下,可以直接运行 3. 在opencv种调节图像和对比度的方法 a. opencv中的实现方法: b. 根据咱们的公式,我 ...
- Opencv中常见的滤波方法
Opencv中常见的滤波方法 - 随性岁分享 - 博客园 opencv:基于opencv的五种滤波方法_M海洋的博客-CSDN博客_opencv滤波 OpenCV3学习(4.2)--图像常用滤波方法( ...
- Opencv中三种操作像素的方法
测试环境:opencv3.1.0 + Visual Studio 2015 + win7 64位 opencv中有3中方法可以访问/修改图像的像素值,分别为: 1. 指针访问 2. ...
- opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别
opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别在opencv中,.at<uchar>()和.ptr<uchar>() ...
- OpenCV中的几种角点检测方法
1.Harris角点检测 import numpy as np import cv2 as cv import matplotlib.pyplot as pltplt.rcParams['font.s ...
最新文章
- datastage 重启
- spring data mongo比较两个字段查询
- 001——数组(一)数组知识及foreach函数应用
- 倒计时1天,盛会将至,长沙 · 1024程序员节全日程曝光(附参会指南)
- 2019-02-26-GCN资料
- Windows批处理(cmd/bat)常用命令小结
- HBuilderX里面创建项目时没有模板解决方案
- stm8s + si4463 寄存器配置
- Spring MVC异常统一处理的三种方式
- 星加坡php开发_PHP 中文简繁互转代码 完美支持大陆、香港、台湾及新加坡
- win10html网页运行空白,win10系统Ie浏览器无法打开HTML格式的网页文件的处理秒方...
- c语言有理数字符形式,C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分...
- 消费金融及物流概念介绍
- 深度学习、机器学习、人工智能的区别
- python微信公众号秒杀代码_如何在微信公众号编辑Python代码?
- 如何获取自己QQ里面的所有qq好友号码
- python分割txt文件
- 日常用语--打电话(整理)
- 大数据的未来在于开放与共享
- 微服务架构讲解:那叫一个通俗易懂
热门文章
- 蓝牙BLE GATT完全分析和运用
- 行内块元素加了文字会被挤下来的原因及解决方法。
- 关于gid 与groups 的区别
- open /prometheus/queries.active: permission denied(已解决)
- 论文笔记——Asynchronous Stochastic Gradient Descent with Delay Compensation
- 实战:垂直电商如何撬动“女人腰包”
- 一次k8s本地虚拟机挂起导致的etcd数据文件损坏
- MySQL介绍-安装-登录
- 使用运算放大器制作移相电路
- 高斯模糊java代码_JAVA bitmap的高斯模糊代码