应用 cv::Pow 时出错
error in applying cv::Pow
我是塞尔瓦。我正在尝试为我的项目中的图像应用 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))`
但这会增加执行时间。
我正在尝试通过
实现 pow 转换 (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);
我得到一张完整的白色图像。我不知道要更改代码中的哪些内容才能获得正确的输出。帮我解决这个问题,谢谢。
问题是您已将它从无符号字符 (UC) 转换为 32 位浮点数。您已转换源类型,但未转换目标类型。这里有些东西丢失了。
您的 pow
类型,将其转换为 CV_32FC1
并重试。另外,检查 convertTo 方法所需的缩放因子。它在 OpenCV 文档中 - http://docs.opencv.org/doc/user_guide/ug_mat.html
已经有人解释过了here
我是塞尔瓦。我正在尝试为我的项目中的图像应用 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))`
但这会增加执行时间。 我正在尝试通过
实现 pow 转换 (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);
我得到一张完整的白色图像。我不知道要更改代码中的哪些内容才能获得正确的输出。帮我解决这个问题,谢谢。
问题是您已将它从无符号字符 (UC) 转换为 32 位浮点数。您已转换源类型,但未转换目标类型。这里有些东西丢失了。
您的 pow
类型,将其转换为 CV_32FC1
并重试。另外,检查 convertTo 方法所需的缩放因子。它在 OpenCV 文档中 - http://docs.opencv.org/doc/user_guide/ug_mat.html
已经有人解释过了here