在open cv c ++中应用gamma的错误

时间:2015-01-07 05:39:20

标签: c++ opencv

我正在尝试将2的幂应用于图像,但输出图像是不同的。这是我的 代码:

double val = 2;
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) = cv::saturate_cast<uchar>(std::pow(src.at<uchar>(i,j),val));

我知道我在做什么是错误,请帮助我。感谢。

1 个答案:

答案 0 :(得分:0)

我修改了代码,它的工作原理!! 而不是使用cv :: saturate_cast,我使用了显式转换“int” 用过的,     dest.at<uchar>(i,j) = (int) (255* std::pow(src.at<uchar>(i,j),val)) 而不是使用,     dest.at<uchar>(i,j) = cv::saturate_cast<uchar>(std::pow(src.at<uchar>(i,j),val))