栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

OpenCV中的saturate操作(饱和操作)究竟是怎么回事

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV中的saturate操作(饱和操作)究竟是怎么回事

OpenCV中的saturate操作(饱和操作)究竟是怎么回事?

用两个实际例子试一下就知道了。

我们用CV_8U类型来试下,CV_8U的范围为0~255

第一个例子:

//OpenCV版本:3.0.0
//VS版本:2013

//博主微信/QQ 2487872782
//有问题可以联系博主交流
//有图像处理开发需求也请联系博主
//图像处理技术交流QQ群 271891601

#include 
#include 
using namespace std;


int main()
{

	cv::Mat A1(2, 3, CV_8UC1, cv::Scalar(254));
	cout << "A1中的数据为:n" << A1 << endl << endl;

	cv::Mat B1(2, 3, CV_8UC1, cv::Scalar(2));
	cout << "B1中的数据为:n" << B1 << endl << endl;

	cv::Mat C1;
	cv::add(A1, B1, C1);
	cout << "C1中的数据为:n" << C1 << endl << endl;

	return(0);
}

运行结果如下:

按道理,结果应该是256,但因为输出矩阵的类型也为CV_8U,而CV_8U的范围为0~255,所以值被置为了255。

第二个例子:

//OpenCV版本:3.0.0
//VS版本:2013

#include 

#include 
using namespace std;


int main()
{

	cv::Mat A1(2, 3, CV_8UC1, cv::Scalar(254));
	cout << "A1中的数据为:n" << A1 << endl << endl;

	cv::Mat B1(2, 3, CV_8UC1, cv::Scalar(2));
	cout << "B1中的数据为:n" << B1 << endl << endl;

	cv::Mat C1;
	cv::subtract(B1, A1, C1);
	cout << "C1中的数据为:n" << C1 << endl << endl;

	return(0);
}

运行结果如下:

按道理,结果应该是-252,但因为输出矩阵的类型也为CV_8U,而CV_8U的范围为0~255,所以值被置为了0。
通过这两个例子,大家就应该理解知道了OpenCV中的saturate操作(饱和操作)究竟是怎么回事了吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968471.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号