OpenCV中的CV_8UC1到CV_32FC1转换

5

在OpenCV C++ API中,我们将图像类型从CV_8UC1转换为CV_32FC1的方法是:

        r1.convertTo(r1, CV_32FC1, 1.0/255.0);

其中,r1是声明为cv::Mat的矩阵。 有人能告诉我如何在OpenCV中使用C API将类型从CV_8UC1转换为CV_32FC1?如果r2是描述为CvMat* r2的矩阵。

1个回答

5

cvConvertScale()可以实现你想要的功能。

假设你有一个类型为8UC1的cvMat * r1和一个类型为32FC1且大小相同的cvMat * r2,则

cvConvertScale(r1, r2, 1.0 / 255.0, 0.0);

由于目标类型是从r2中获取的,所以它不能是与r1相同的cvMat。


我的代码崩溃了。文档显示,这是用于转换CvArr类型的旧式C函数:C: void cvConvertScale(const CvArr src, CvArr dst, double scale=1, double shift=0)**。它是否也适用于cv::Mat? - Valentin H
2
不,cvConvertScale() 不适用于 cv::Mat。实际上,问题是关于如何处理 cv::Mat 的。 - Bull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接