1

我正在使用 Opencv,我有两个框架:cv::frame1 和 cv::frame2,当我检查它们的类型时,我得到:

 frame1.type()  is 16 
frame2.type() is 21

我的问题是如何在不丢失数据的情况下将 frame2 的类型更改为 16?我试过 frame2.convertTo() 它没用。

任何想法 ?

4

1 回答 1

1

据我了解,您希望将 CV_32FC3(3 通道浮点)类型的图像转换为 CV_8UC3(3 通道无符号字符)。这不能在不丢失一些信息的情况下完成:在第一种情况下,每个像素有 4 个字节,而在第二种情况下,每个像素有 1 个字节,所以你知道会有一些损失。

此代码用于转换为不同的类型,对我来说效果很好:

cv::Mat A = cv::Mat(480, 640, CV_32FC3, CV_RGB(1.0,1.0,1.0));
cv::Mat B;
A.convertTo(B, CV_8UC3);
于 2013-01-09T16:18:17.757 回答