gpt4 book ai didi

opencv - OpenCV 中的 saturate_cast 如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:22 26 4
gpt4 key购买 nike

看不懂,表达式Vxy和Vxy_nocast的结果

uchar init_m0[] = {10,10,30};
cv::Mat m0(3,1,CV_8UC1,init_m0,sizeof(uchar));
uchar& Vxy = m0.at<uchar>(0);
uchar& Vxy_nocast = m0.at<uchar>(1);
std::cout << m0 << std::endl;
Vxy = cv::saturate_cast<uchar>((Vxy-128)*2 + 128);
Vxy_nocast = (Vxy_nocast-128)*2 + 128;
std::cout << m0 << std::endl;

结果

[ 10;
10;
30]
[ 0;
148;
30]

最佳答案

(10-128)*2 + 128 = -108 . cv::saturate_cast<uchar>是对 unsigned char 的饱和转换,unsigned char 只能是 >= 0。普通的 uchar 转换(如果您未指定任何内容会隐式发生)将通过重新解释位将负值换成正值,-108 是10010100在 2 的补码二进制中,它与 148 相同(并且它还会环绕一个更大的值,例如 257 到 1)。饱和转换会将负值转换为 0,在类型的最小值 0 处饱和(同样,正值会在最大值 255 处饱和)。

参见 saturation arithmetic了解更多详情。

关于opencv - OpenCV 中的 saturate_cast 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com