c ++ 如何在 OpenCV 中进行 float->uchar 的转换?

c++ How can I do the casting float->uchar in OpenCV?

本文关键字:gt uchar 转换 float- OpenCV      更新时间:2023-10-16

我的高斯掩码1D有问题。我有一个功能:

f(x) = exp(-0.5*x^^2 / sigma^^2)

所以,我在OpenCV:中制作了这段代码

 Mat getMask(int sigma){
     Mat out(1,6*sigma+1,CV_8UC1);  
     for (int i=0; i<6*sigma+1; i++){
        float f =  exp((-1)*(i-(6*sigma)/2)/(sigma*sigma));
        out.at<uchar>(Point(i,0)) = static_cast<unsigned char>(f);
      }
      return out;
}

但是,当我在我的图像上涂上口罩时,它会返回一个黑色的。我试着用cout随时控制垫子上的东西,我会得到笑脸之类的字符。我该怎么办
这就是我在循环中看到的cout:

Float: 20.0855
Casting float to unsigned char: ¶
What I insert: ¶

如果您想在输出流中显示像素的值,您应该执行如下所示的显式强制转换-

cout << (int) image.at<uchar>(i,j) << endl;