应用 cv::Pow 时出错

error in applying cv::Pow

我是塞尔瓦。我正在尝试为我的项目中的图像应用 2.0 的 pow 值。 我可以使用以下方法应用 pow。

`cv::Mat src = imread("123.png",0);
 cv::Mat dest ( src.size(), CV_8UC1);
 for( int i=0; i<src.rows; i++)
   for(int j=0; j<src.cols; j++)
     dest.at<uchar>(i,j) = (int) (255* std::pow(src.at<uchar>(i,j)/255.0,val))`

但这会增加执行时间。 我正在尝试通过

实现 pow 转换 (GAMMA)

Mat src = imread("123.png",0); cv::Mat dest(src.size(),CV_8UC1); src.convertTo(src,CV_32FC1); cv::pow(src,2.0,dest);

我得到一张完整的白色图像。我不知道要更改代码中的哪些内容才能获得正确的输出。帮我解决这个问题,谢谢。

问题是您已将它从无符号字符 (UC) 转换为 32 位浮点数。您已转换源类型,但未转换目标类型。这里有些东西丢失了。

您的 pow 类型,将其转换为 CV_32FC1 并重试。另外,检查 convertTo 方法所需的缩放因子。它在 OpenCV 文档中 - http://docs.opencv.org/doc/user_guide/ug_mat.html

已经有人解释过了here