OpenCV转换为较小的数据类型:Max还是truncate/overflow?
我需要通过一个带通滤波器为一个项目,我的工作视频缓冲区。带通滤波器包括FFT和IFFT,以及通带外频率的平坦化。为了实现这一点,我需要比标准uchar类型有更多的空间来存储值,因此我暂时将视频帧转换为CV_64F,并计划将其转换回CV_8UC3。我的问题是:OpenCV转换为较小的数据类型:Max还是truncate/overflow?,opencv,type-conversion,Opencv,Type Conversion,我需要通过一个带通滤波器为一个项目,我的工作视频缓冲区。带通滤波器包括FFT和IFFT,以及通带外频率的平坦化。为了实现这一点,我需要比标准uchar类型有更多的空间来存储值,因此我暂时将视频帧转换为CV_64F,并计划将其转换回CV_8UC3。我的问题是: 将cv::Mat数据从大型数据类型转换为小型数据类型时,OpenCV的行为是什么?更具体地说,如果在cv::Mat对象中,cv_64F数据的值大于cv_8U中单个数据点的最大可能值,OpenCV是否将目标数据设置为该数据类型的最大可能值,或
将cv::Mat数据从大型数据类型转换为小型数据类型时,OpenCV的行为是什么?更具体地说,如果在cv::Mat对象中,cv_64F数据的值大于cv_8U中单个数据点的最大可能值,OpenCV是否将目标数据设置为该数据类型的最大可能值,或者我们有溢出或截断问题吗?刚刚编写了一个简单的程序来了解它是如何工作的:
#包括
#包括
使用名称空间std;
int main(){
cv::Mat img1(cv::尺寸(2,2),cv_64F);
img1=cv::标量(5000000);
cv::Mat img2;
img1.转换器(img2,CV_8U);
对于(int i=0;i