功能描述

在opencv中,saturate_cast的作用是防止数据溢出,作出保护。原理可理解为如下代码功能:

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

示例

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
	}
}
imshow("output2",dst);

这里加了数据溢出保护,图像显示如下:

opencv saturate_cast使用详解

如果不加溢出保护的话:

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] = (src1_ptr[j]*alpha + src2_ptr[j]*beta + gama);//gama = -100, alpha = beta = 0.5
	}
}
imshow("output2",dst);

会出现数据溢出,图像显示如下:

opencv saturate_cast使用详解

本示例引用于:https://blog.csdn.net/mjlsuccess/article/details/12401839 

相关文章:

  • 2021-04-29
  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
  • 2021-12-20
  • 2021-12-15
  • 2021-12-04
  • 2021-08-16
猜你喜欢
  • 2021-10-21
  • 2022-12-23
  • 2021-07-25
  • 2022-02-27
  • 2021-06-20
  • 2021-04-29
  • 2022-12-23
相关资源
相似解决方案