我正在尝试将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));
我知道我在做什么是错误,请帮助我。感谢。
答案 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))