应用cv :: Pow时出错

时间:2015-01-08 09:00:58

标签: c++ opencv

我是塞尔瓦。我试图在我的项目中为图像应用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))`

但这会增加执行时间。 我正试图实现战争转型(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);

我正在获得完整的白色图像。我不知道在我的代码中要改变什么来获得正确的输出。帮我解决这个问题,谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

有人已经解释过它here