在不丢失数据的情况下更改帧类型

时间:2013-01-09 12:39:20

标签: c++ opencv

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

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

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

任何想法?

1 个答案:

答案 0 :(得分: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);