c – openCV:如何看待负值?
根据文档,imshow将这样工作
>如果图像是8位无符号,则按原样显示. 如果我的Matrix在32位浮点中包含负值,该怎么办?怎么治疗呢? 解决方法
Open_CV源的关键位是
#define CV_8S 1 #define CV_32S 4 #define CV_32F 5 double scale = src_depth <= CV_8S ? 1 : src_depth <= CV_32S ? 1./256 : 255; double shift = src_depth == CV_8S || src_depth == CV_16S ? 128 : 0; dst[x] = saturate_cast<DT>(src[x]*scale + shift); 最终imshow在显示它之前创建一个CV_8 Mat,所以saturate_cast,当DT是uchar时,将参数钳位到0和255. 对于浮点深度== CV_32F: > src_depth小于CV_8S和CV_32S,因此scale == 255(与doco一致). 这意味着CV_32F >大于1.0的值最终为255(白色) 现在回答你的问题:
负值将显示为0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |