C++ 应用cv::Pow时出错
我是塞尔瓦。我正在尝试将pow值2.0应用于我的项目中的图像。 我可以使用以下方法应用powC++ 应用cv::Pow时出错,c++,opencv,C++,Opencv,我是塞尔瓦。我正在尝试将pow值2.0应用于我的项目中的图像。 我可以使用以下方法应用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.
`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))`
`cv::Mat src=imread(“123.png”,0);
cv::Mat dest(src.size(),cv_8UC1);
对于(int i=0;i而言,问题在于您已经将其从无符号字符(UC)转换为32位浮点。您已经转换了源类型,但没有转换目标类型。这里有些东西丢失了
键入您的pow
,将其转换为CV_32FC1
,然后重试。此外,检查convertTo方法所需的比例因子。它在OpenCV文档中-
有人已经解释过了它显示了错误。你想用CV_32FC1或CV_32C1检查吗?我也试过用CV_32FC1,但错误是一样的。我已经将dest类型更改为CV_32FC1。我可以再次将其转换为无符号字符吗?检查更新的答案,然后从头开始尝试。我已经像这样更改了代码,它可以工作,Mat src=imread(“123.bmp”,0);cv::Mat dest(src.size(),cv_32FC1);src.convertTo(src,cv_32FC1,1.0/255.0);cv::pow(src,2.0,dest);dest.convertTo(dest,cv_8uc1255);
谢谢您的时间。