我使用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);