`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);
我正在获得完整的白色图像。我不知道在我的代码中要改变什么来获得正确的输出。帮我解决这个问题,谢谢。
答案 0 :(得分:0)
问题是您已将其从无符号字符(UC)转换为32位浮点。您已转换了源,但未转换目标类型。这里有些东西迷失了。
您的pow
类型,将其转换为CV_32FC1
然后重试。另外,检查convertTo方法所需的缩放因子。它位于OpenCV文档中 - http://docs.opencv.org/doc/user_guide/ug_mat.html
有人已经解释过它here