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



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

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

我的问题是我怎么能改变类型的frame2到16而不丢失它的数据?我尝试了frame . convertto(),但没有成功。

有什么想法吗?

根据我的理解,您要将类型为CV_32FC3(3通道float)的图像转换为CV_8UC3(3通道无符号char)。如果不丢失一些信息,这是不可能做到的:在第一种情况下,每个像素有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);

相关内容

最新更新