OpenCV 中的 CV_8UC1 到 CV_32FC1 的转换
Posted
技术标签:
【中文标题】OpenCV 中的 CV_8UC1 到 CV_32FC1 的转换【英文标题】:CV_8UC1 to CV_32FC1 conversion in OpenCV 【发布时间】:2013-07-19 12:14:53 【问题描述】:我们在 OpenCV 中使用 C++ API 将图像类型从 CV_8UC1
转换为 CV_32FC1
的方式是
r1.convertTo(r1, CV_32FC1, 1.0/255.0);
其中r1
是声明为cv::Mat
的矩阵。
谁能告诉我如何使用 C API 在 OpenCV 中从 CV_8UC1
转换为 CV_32FC1
类型?如果r2
是描述为CvMat* r2
的矩阵。
【问题讨论】:
【参考方案1】: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? 不,cvConvertScale()
不适合 cv::Mat。这个问题实际上说明了如何处理 cv::Mat。以上是关于OpenCV 中的 CV_8UC1 到 CV_32FC1 的转换的主要内容,如果未能解决你的问题,请参考以下文章
opencv mat的数据类型CV_32FC1变成CV_8UC1